Configure the .Net Application Loggers
Before you begin, review the Supported Log Frameworks.
For log4net, the following metadata is added to the relevant global or the current scope context and written to the log file.
-
appd_node_id
-
appd_bt_id
-
appd_request_guid
This is an example of log4net log enrichment using an appender.
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>
For NLogs, the following metadata is injected into the log files.
- Global scope context
appd_node_id
- Current scope context
appd_bt_id
appd_request_guid
This is an example of NLog configuration settings that utilize targets to inject metadata into log files.
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>