.Net アプリケーションロガーの設定
開始する前に、「サポートされているログフレームワーク」を確認してください。
log4net の場合、次のメタデータが関連するグローバルまたは現在の範囲コンテキストに追加され、ログファイルに書き込まれます。
appd_node_idappd_bt_idappd_request_guid
これは、アペンダを使用した log4net ログエンリッチメントの例です。
log4net
<log4net>
<appender name="RollingFile" type="log4net.Appender.FileAppender">
<file value="app.log" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] appd_node_id=%property{appd_node_id} appd_bt_id=%property{appd_bt_id} appd_request_guid=%property{appd_request_guid} %-5level %logger{1} %message%newline" />
</layout>
</appender>
<root>
<level value="ALL" />
<appender-ref ref="RollingFile" />
</root>
</log4net>
NLog の場合、次のメタデータがログファイルに挿入されます。
- グローバルのスコープコンテキスト
appd_node_id
- 現在のスコープコンテキスト
appd_bt_idappd_request_guid
これは、ターゲットを使用してログファイルにメタデータを挿入する NLog 構成設定の例です。
NLog
<targets>
<!-- File Target for all log messages with basic details -->
<target xsi:type="File" name="allfile" fileName=".\nlog-AspNetCore-all-${shortdate}.log" layout="${longdate}|appd_node_id=${gdc:appd_node_id}|appd_bt_id=${scopeproperty:appd_bt_id}|appd_request_guid=${scopeproperty:appd_request_guid}|${event-properties:item=EventId:whenEmpty=0}|${level:uppercase=true}|${logger}|${message} ${exception:format=tostring}" />
</targets>
Serilog
Serilog の場合、ログエンリッチメントにより、コンテキスト情報を提供する特定の文字列プロパティで各ログメッセージが強化されます。プロパティには以下のものが含まれます。
appd_node_idappd_bt_idappd_request_guid
ログ内のこの拡充されたデータをキャプチャして表示するには、出力テンプレートにこれらのプロパティを明示的に組み込む必要があります。たとえば、出力テンプレートには次のものが含まれている必要があります。
appd_node_id={appd_node_id} appd_bt_id={appd_bt_id} appd_request_guid={appd_request_guid}
appsettings.json ファイルと一緒に Serilog.Settings.Configuration NuGet パッケージを使用して Serilog を構成する場合は、サンプルテンプレートを使用します。
"Serilog": {
"Using": [ "Serilog.Sinks.File" ],
"MinimumLevel": "Debug",
"WriteTo": [
{
"Name": "File",
"Args": {
"path": "log.txt",
"outputTemplate": "[{Timestamp:HH:mm:ss} appd_node_id={appd_node_id} appd_bt_id={appd_bt_id} appd_request_guid={appd_request_guid} {ThreadId} {Level:u3}] {Message:lj}{NewLine}{Exception}"
}
}
],
"Enrich": [ "WithThreadId" ]
}