2009-05-29 118 views

回答

1

(SharePoint 2007?)從中央管理,轉到操作 - >診斷日誌記錄,「跟蹤日誌」和「事件限制」是你要找的。

在「事件限制」中選擇一個類別,併爲事件和跟蹤日誌選擇最少嚴重錯誤。然後,選擇跟蹤日誌的路徑(我的默認值爲.12 \ LOGS),並提供最大日誌數和使用每個日誌文件的分鐘數。

+0

我是否需要在web.config中添加任何東西? 我只想說些像Trace.WriteLine(「comment」); – raklos 2009-05-29 13:42:12

3

微軟提供了一個例子:

http://msdn.microsoft.com/en-us/library/aa979522.aspx

該樣品寫入到ULS使用本地跟蹤的方法登錄,所以有點PInvoke的是在代碼中使用。

然後,您可以控制記錄事件的類型,你的代碼,如:

TraceProvider.WriteTrace(0, TraceProvider.TraceSeverity.High, Guid.Empty, "MyExeName", "Product Name", "Category Name", "Sample Message"); 

節流中央管理設置本次活動將仍然以這種方式兌現。

2

我的首選方法是編寫一個自定義的HttpModule來捕獲和記錄所有錯誤。記錄錯誤後,您可以將用戶重定向到錯誤頁面 - 這是我見過的最常用於SharePoint中自定義錯誤處理的方法。

在您的HttpModule中,您可以使用諸如Daniel描述的方法將例外寫入ULS日誌。

這裏是這樣做的一個簡單的例子:

創建一個實現IHttpModule的類,及導線上的HTTP管道的相應事件:

public void Init(HttpApplication context) 
{ 
    context.Error += new EventHandler(context_Error); 
} 

在context_Error情況下,通過所有的錯誤和日誌他們...

void context_Error(object sender, EventArgs e) 
{ 
    TraceProvider.RegisterTraceProvider(); 

    foreach (var ex in HttpContext.Current.AllErrors) 
    { 

     TraceProvider.WriteTrace(0, 
      TraceProvider.TraceSeverity.Exception, 
      Guid.NewGuid(), 
      Assembly.GetExecutingAssembly().FullName, 
      "<your application name>", 
      "<exception category>", 
      ex.ToString()); 
    } 

    TraceProvider.UnregisterTraceProvider(); 

    HttpContext.Current.Server.ClearError(); 
    HttpContext.Current.Response.Clear(); 
    HttpContext.Current.Server.Transfer("/_layouts/Error500.aspx"); 
} 

當然,你必須全部包裹起來這爲功能(在Web應用程序級別範圍的),並將其部署到SharePoint。

請注意,對於此自定義錯誤http模塊的web.config部分中的條目需要在列表中處於第一位。該章節中列出http模塊的順序很重要,自定義錯誤http模塊應始終首先執行。