.Net アプリケーションロガーの設定

開始する前に、「サポートされているログフレームワーク」を確認してください。

log4net の場合、次のメタデータが関連するグローバルまたは現在の範囲コンテキストに追加され、ログファイルに書き込まれます。

  • appd_node_id
  • appd_bt_id
  • appd_request_guid

これは、アペンダを使用した log4net ログエンリッチメントの例です。

log4net

CODE
<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_id
    • appd_request_guid

これは、ターゲットを使用してログファイルにメタデータを挿入する NLog 構成設定の例です。

NLog

JSON
<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_id
  • appd_bt_id
  • appd_request_guid

ログ内のこの拡充されたデータをキャプチャして表示するには、出力テンプレートにこれらのプロパティを明示的に組み込む必要があります。たとえば、出力テンプレートには次のものが含まれている必要があります。

CODE
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 を構成する場合は、サンプルテンプレートを使用します。

JSON
"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" ]
}