${mdlc:item=RequestId} 和 ${aspnet-request-posted-body} 不返回数据
${mdlc:item=RequestId} and ${aspnet-request-posted-body} not returning data
我在 nlog.config 文件中使用 ${aspnet-request-posted-body}
,我还在启动文件中添加了配置。但是 ${aspnet-request-posted-body}
没有记录请求正文并且 ${mdlc:item=RequestId}
也没有工作
<target xsi:type="File" name="allfile" fileName="c:\Logs\Api_.log"
layout="==>[${event-properties:item=traceLevel}: User=${aspnet-user-identity}; ]
${when:when=('${event-properties:item=traceLevel}' == 'Verbose' and
'${aspnet-request-method}' != 'GET') > 0 and length('${mdlc:item=RequestId}') > 0:inner=${newline}Request-Body\: ${aspnet-request-posted-body}}
${newline}Logger name: ${logger}
${newline}" />
${aspnet-request-posted-body}
和 ${mdlc:item=RequestId}
在 nlog 文件中使用
- 为了在启动时启用
${aspnet-request-posted-body}
,我使用了这段代码。
app.Use(async (context, next) =>
{
context.Request.EnableBuffering();
await next?.Invoke();
});
可能会从像这样简单的事情开始:
<target xsi:type="File" name="allfile" fileName="c:\Logs\Api_.log"
layout="RequestId=${mdlc:item=RequestId} RequestBody=${aspnet-request-posted-body}" />
然后在调试级别启用 NLog InternalLogger 并寻找线索:
- https://github.com/NLog/NLog/wiki/Internal-Logging
- https://github.com/NLog/NLog/wiki/Logging-troubleshooting
除了调用 EnableBuffering()
之外,您还需要使用方法 UseNLog()
将 NLog 正确注册为 LoggingProvider。另见 https://github.com/NLog/NLog/wiki/Getting-started-with-ASP.NET-Core-3
如果您不使用 Microsoft ILogger
在活动 HttpRequest 的上下文中进行日志记录,则 RequestId
将不可用。
我在 nlog.config 文件中使用 ${aspnet-request-posted-body}
,我还在启动文件中添加了配置。但是 ${aspnet-request-posted-body}
没有记录请求正文并且 ${mdlc:item=RequestId}
也没有工作
<target xsi:type="File" name="allfile" fileName="c:\Logs\Api_.log"
layout="==>[${event-properties:item=traceLevel}: User=${aspnet-user-identity}; ]
${when:when=('${event-properties:item=traceLevel}' == 'Verbose' and
'${aspnet-request-method}' != 'GET') > 0 and length('${mdlc:item=RequestId}') > 0:inner=${newline}Request-Body\: ${aspnet-request-posted-body}}
${newline}Logger name: ${logger}
${newline}" />
${aspnet-request-posted-body}
和${mdlc:item=RequestId}
在 nlog 文件中使用- 为了在启动时启用
${aspnet-request-posted-body}
,我使用了这段代码。
app.Use(async (context, next) =>
{
context.Request.EnableBuffering();
await next?.Invoke();
});
可能会从像这样简单的事情开始:
<target xsi:type="File" name="allfile" fileName="c:\Logs\Api_.log"
layout="RequestId=${mdlc:item=RequestId} RequestBody=${aspnet-request-posted-body}" />
然后在调试级别启用 NLog InternalLogger 并寻找线索:
- https://github.com/NLog/NLog/wiki/Internal-Logging
- https://github.com/NLog/NLog/wiki/Logging-troubleshooting
除了调用 EnableBuffering()
之外,您还需要使用方法 UseNLog()
将 NLog 正确注册为 LoggingProvider。另见 https://github.com/NLog/NLog/wiki/Getting-started-with-ASP.NET-Core-3
如果您不使用 Microsoft ILogger
在活动 HttpRequest 的上下文中进行日志记录,则 RequestId
将不可用。