【发布时间】:2018-03-11 00:45:31
【问题描述】:
我有一个简单的 asp.net 核心 web api 应用程序(使用 Visual Studio 2017 中的默认 web api 模板)使用 nlog 以 JSON 格式将消息记录到控制台。
- ASP.NET Core 2:2.0.5
- NLog 版本:4.5.0-rc07
- NLog.Web.AspNetCore: 4.5.0-rc03
这里是 NLog 配置文件:
<!-- the targets to write to -->
<targets>
<target xsi:type="Console" name="console_log" >
<layout xsi:type="JsonLayout">
<attribute name="ts" layout="${date}" />
<attribute name="level" layout="${level:upperCase=true}"/>
**<attribute name="all-events" layout="${all-event-properties}"/>
<attribute name="tid" layout="${aspnet-request:header=tid}"/>**
<attribute name="cn" layout="${callsite}"/>
<attribute name="msg" layout="${message}" />
</layout>
</target>
</targets>
<!-- rules to map from logger name to target -->
<rules>
<!--All logs, including from Microsoft-->
<logger name="*" minlevel="Debug" writeTo="console_log" />
</rules>
</nlog>
在 Startup.cs 中,Configure 方法包含以下两行:
env.ConfigureNLog("nlog.config");
loggerFactory.AddNLog();
我将 JSON 格式的日志消息输出到控制台。但是,我无法接收到 tid,它是 HTTP 请求标头中的自定义标头。
如何提取 HTTP 请求标头并将其输出到控制台?
感谢您的 cmets/answers/指导。谢谢。
【问题讨论】:
-
问题是在 nlog.config 中缺少 NLog.Web.AspNetCore 扩展。
标签: c# asp.net-core nlog