切换到"trace"日志级别,但仅适用于当前 Web 请求 (nLog)



我希望能够在生产中打开NLOG中的跟踪级记录,但仅适用于当前的Web请求。

换句话说,我希望能够做类似...

之类的事情

http://mywebsite.com?logeverything=true

...它可以进行跟踪级记录,但仅针对该网络请求,而不是同时发生的数百个其他请求。我还希望该请求的日志与其余的日志记录所在的文件不同。查询字符串的一种可接受的替代方法是打开跟踪级记录,但前提是Web请求是本地的。

我可以编写自己的记录器类,并覆盖NLOG日志方法以沿着这些行进行操作,但是我的Web项目使用了许多不同的组件,然后切换所有项目使用新的Logger类是一个疼痛。

有人这样做吗?

这可以在不需要包装的情况下完成。

  1. 也安装nlog.web(或在ASP.NET核心的情况下:nlog.web.aspnetcore nd nd selthertation教程

  2. 在C#

  3. 中创建跟踪日志
  4. 写入会话是您的请求
  5. 在.config

    中过滤您的日志
    <logger name="*" writeTo="myFile">
       <filters>
         <when condition="${aspnet-session:Variable=myRequest} != 1" action="Ignore" />
      </filters>
    </logger> 
    
    • 在这种情况下,我使用会话,但是您也可以使用${aspnet-request-url}-但这使得配置更复杂

相关内容

最新更新