ロギング システムを使用して大規模な Web アプリケーションを追跡したいと考えています。これまでのところ、構成と API が簡単な NLog に落ち着きました。
トレースを有効にすると、さまざまなユーザーのログが大量に記録されることを期待しています。個々のログ行を単一のリクエストに関連付ける方法はありますか?
それを尋ねた後、答えを見つけました。
各要求は ASP.NET の新しいスレッドによって処理されるため、現在のスレッドに一意の名前を付けるのがコツです。
HttpRequest request = HttpContext.Current.Request;
Thread.CurrentThread.Name = Guid.NewGuid().ToString() + request.UserHostAddress;
この情報は、NLog で次のように読み取ることができます。${threadname}
ASP 情報を出力する LayoutRenderer がいくつかあります (私は ASP.NET 用に開発したことがないので、(もしあれば) どれが必要なものを提供するかはわかりません)。LayoutRenderer のリストについては、このリンクを参照してください。
http://nlog-project.org/wiki/Layout_renderers
(同じサイトの) NLog フォーラムから、何人かの人々が ASP.NET LayoutRenders で何かを出力するのに問題を抱えていることがわかります (少なくとも NLog 2.0 では)。これまでに推奨された解決策 (ベータ段階で修正する必要があります) は、これを NLog.config ファイルに追加することです。
<extensions>
<add assembly="NLog.Extended" />
</extensions>
NLog.Extended.dll が NLog.dll と同じディレクトリにあることを確認する
フォーラムは個々の投稿へのリンクを提供していないため、フォーラムの特定の投稿へのリンクを投稿することはできませんが、2010 年 10 月 28 日に寄せられた質問への回答でした。質問のタイトルは次のとおりです。 NLOG と ASP.NET".