【问题标题】:${mdlc:item=RequestId} and ${aspnet-request-posted-body} not returning data${mdlc:item=RequestId} 和 ${aspnet-request-posted-body} 不返回数据
【发布时间】:2020-11-20 19:05:20
【问题描述】:

我在我的 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}" />
  1. ${aspnet-request-posted-body}${mdlc:item=RequestId} 在 nlog 文件中使用
  2. 为了在启动时启用${aspnet-request-posted-body},我使用了这段代码。
              app.Use(async (context, next) =>                     
              {
                            context.Request.EnableBuffering();
                            await next?.Invoke();
              }); 

【问题讨论】:

标签: asp.net c#-4.0 nlog


【解决方案1】:

可能会从这样简单的事情开始:

<target xsi:type="File" name="allfile" fileName="c:\Logs\Api_.log"
            layout="RequestId=${mdlc:item=RequestId} RequestBody=${aspnet-request-posted-body}" />

然后在Debug-Level开启NLog InternalLogger,寻找线索:

除了调用EnableBuffering()之外,你还需要使用UseNLog()方法正确地将NLog注册为LoggingProvider。另见https://github.com/NLog/NLog/wiki/Getting-started-with-ASP.NET-Core-3

如果您没有使用 Microsoft ILogger 在活动 HttpRequest 的上下文中进行日志记录,则 RequestId 将不可用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-07-25
    • 2021-02-15
    • 2023-02-09
    • 1970-01-01
    • 1970-01-01
    • 2016-04-01
    • 2011-05-18
    相关资源
    最近更新 更多