2012-06-12 84 views
1

我有一個.net 3.5網站,在Visual Studio中運行它時工作正常。但是,當我們在IIS中運行它時會出現一些錯誤。我想要做的是在web.config中添加一些類型的日誌記錄,以便將發生在網站上的事情記錄到文件中。任何這樣做的好方法?謝謝.net 3.5從web.config記錄到文件

回答

2

如果您的代碼使用內置的.NET System.Diagnostics.Trace函數輸出日誌信息,則可以使用web.config文件控制和配置這些跟蹤的位置。

在代碼中,使用調用像

System.Diagnostics.Trace.TraceInformation("Your log info here"); 

在你的web.config,建立一個事件日誌跟蹤偵聽這樣的:

<configuration> 
    <system.diagnostics> 
    <trace autoflush="false" indentsize="4"> 
     <listeners> 
     <add name="myListener" 
      type="System.Diagnostics.TextWriterTraceListener" 
      initializeData="TextWriterOutput.log" /> 
     <remove name="Default" /> 
     </listeners> 
    </trace> 
    </system.diagnostics> 
</configuration> 

這將路線從你的程序輸出的跟蹤文本文件TextWriterOutput.log

此處瞭解詳情:http://msdn.microsoft.com/en-us/library/system.diagnostics.tracelistener.aspx

+0

日誌文件寫入的路徑是什麼? – lhunath

+0

可能是應用程序bin目錄或用戶appdata。你可以在initializeData字符串中指定一個完整的文件名路徑。 – dthorpe

0

我不明白你的意思是「發生在一個文件」,但我的首選添加日誌記錄的方式是使用NLog

NLog可通過NuGet獲得,功能強大且易於安裝。對於不同類型的錯誤,您可以有不同的日誌操作。例如,我將大部分內容記錄到一個文件中,但也有致命錯誤向運行團隊發送電子郵件,這是因爲我的很多使用NLog的Web應用程序。

如果這不是你想要的,請更新你的問題,以便更清楚地解決你想要解決的問題。

0

其中最強大的(在我看來)日誌框架是ELMAH。它可以自動記錄錯誤,還可以實現自己的觸發器以將信息存儲在日誌中。

最重要的是,您可以在不更改代碼庫的情況下實現它。只需要更改web.config或machine.config。

0

你應該真的使用像NLog這樣的好日誌框架(正如其他地方所建議的那樣)。但是,如果你只是需要一些快速和骯髒的,考慮加入一些簡單的錯誤處理在Global.asax Application_Error事件,像這樣(無內存):

protected void Application_Error(object sender, EventArgs e) 
{ 
    // Get error and log objects 
    var exception = Server.GetLastError(); 
    var log = new System.IO.StreamWriter("c:\\path\\to\\log.txt"); 

    // Write out what you need and close the file 
    log.WriteLine(exception.Message); 
    log.Close(); 

    // Redirect to error page .. 
} 

記住,以確保您有必要的權限打開/創建日誌文件。