SharePoint でログを記録する方法を教えてください。トレースを使用したい。
12 個のハイブ ログに記録されるようにします。
マイクロソフトは例を提供しています:
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");
中央管理のイベント調整設定は、このアプローチでも引き続き受け入れられます。
私が好むアプローチは、すべてのエラーをトラップしてログに記録するカスタム 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 モジュールは常に最初に実行する必要があります。
(SharePoint 2007?)サーバーの全体管理から[操作]-> [診断ログ]に移動し、[トレースログ]と[イベントスロットリング]を探しています。
「イベントスロットリング」でカテゴリを選択し、イベントログとトレースログの両方で最も重大度の低いエラーを選択します。次に、トレースログのパスを選択し(デフォルトでは..12 \ LOGS)、ログの最大数と各ログファイルを使用する分数を指定します。
参考になるブログ記事を書いてみました。私が提案するのは、BCL ログ クラス (System.Diagnostics) を使用し、SharePoint ULS ログに書き込むカスタム TraceListner を作成することです。
http://sharepoint.nailhead.net/2008/04/instrumentation-logging-for-sharepoint.html
MOSS を使用している場合は、これを使用できます。
Microsoft.Office.Server.Diagnostics.PortalLog.LogString("Message");
Microsoft のドキュメントによると、LogString は内部使用のために予約されており、コードから直接使用することを意図していないことに注意してください。
詳細については、このリンクを参照してください -