2016-03-08 83 views
-1

問題:

Perl腳本生成的錯誤不顯示或記錄在Azure Web應用程序中。如何在Azure中顯示Perl錯誤?

重現步驟:

  • 安裝草莓的Perl到天青web應用程序,使用this guide

    該指南最相關的部分是我將Perl配置爲.pl擴展名的處理程序,使用perl.exe,參數爲-MFCGI::IIS=do

  • 啓用記錄到本地文件系統(錯誤級別:詳細)。

  • 啓用詳細的錯誤消息和失敗的請求跟蹤。

  • 運行下面的測試腳本在瀏覽器中:

    
    use strict; 
    use warnings; 
    use diagnostics; 
    use CGI::Carp 'fatalsToBrowser'; 
    
    use CGI; 
    my $q = new CGI; 
    print $q->header(-type => "text/plain"); 
    
    print "Hello, World!\n"; 
    
    die "This is a test"; 
    
    print "End of script."; 
    

我的結果: 「你好,世界」 後

  • 腳本會(不顯示「腳本結束」和「這是測試」)。

  • 「這是測試」在/ LogFiles目錄中的任何日誌文件中都找不到。

事情我已驗證

  • 草莓的Perl當經由(使用捻)命令行執行運行。

  • 當使用命令行運行,該腳本會產生預期的結果:

     
    [Thu Mar 10 16:09:30 2016] azure-test.pl: This is a test at d:\home\site\wwwroot\cgi-bin\azure-test.pl line 12. 
    Content-Type: text/plain; charset=ISO-8859-1 
    
    Hello, World! 
    <h1>Software error:</h1> 
    <pre>This is a test at d:\home\site\wwwroot\cgi-bin\azure-test.pl line 12. 
    </pre> 
    <p> 
    For help, please send mail to this site's webmaster, giving this error message 
    and the time and date of the error. 
    
    </p> 
    

爲什麼我就不能使用Perl來查看錯誤?

代碼的另一部分在Azure中失敗,但在Perl中失敗。我需要查看Azure環境中生成的錯誤,以便對其進行故障排除。

+1

您正在使用'print'其中'warn'或'die'被調用。其次,你正在發送標題兩次。第三,這可能與您的Web服務器比其他設置更重要。找到日誌的位置,找出你正在選擇的日誌。 –

+0

@SinanÜnür1.生產代碼使用'die','print'在這裏使用,因爲我可以確認在腳本的其他地方使用了'print'語句。修改爲「警告」;行爲沒有變化。 2.刪除標題打印語句;行爲沒有變化。 3.我已經指出了我在Azure中查找日誌的位置(以及我的日誌設置)。如果存在記錄這些錯誤的不同位置,那麼作爲答案是可接受的。 – AaronSieb

+0

因此,我得到了選票和關閉投票...是否爲Az的Azure配置脫離主題?如果是的話,哪裏可以發佈這樣的問題? – AaronSieb

回答

0

通過調整* .pl擴展名的處理程序映射的附加參數,可以將錯誤發送到瀏覽器。

特別是,-MFCGI::IIS=eval爲我工作。

請參閱documentation

請注意,某些錯誤仍然不會在瀏覽器中報告。例如,DBI數據庫調用似乎存在問題,導致進程停止而不顯示錯誤消息。

可以使用失敗的請求追蹤來查看這些錯誤。

失敗請求跟蹤可將所有設置下啓用 - >診斷日誌 - >失敗請求跟蹤

所生成的日誌是通過FTP訪問的/LogFiles/W3SVC*/fr*.xml。

要查看這些文件,請將您的請求的XML文件與freb.xsl一起從同一目錄下載。然後,您可以在XML查看器(如Internet Explorer)中查看日誌XML文件。

的更多信息: