切换到“跟踪”日志级别,但仅适用于当前Web请求(nLog)

时间:2017-12-04 16:03:59

标签: asp.net logging nlog

我希望能够在生产中打开nLog中的跟踪级别日志记录,但仅限于当前的Web请求。

换句话说,我希望能够做点像......

http://mywebsite.com?logeverything=true

...这将执行跟踪级别的日志记录,但仅针对该Web请求,而不是同时发生的数百个其他请求。我还希望该请求的日志转到不同于其他日志记录的文件。查询字符串的可接受替代方法是打开跟踪级别的日志记录,但前提是Web请求是本地的。

我可以编写自己的Logger类并覆盖nLog日志方法来执行这些操作,但我的Web项目使用了许多不同的程序集,并且切换所有项目以使用新的记录器类将是一个疼痛

有人做过这样的事吗?

1 个答案:

答案 0 :(得分:1)

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

  1. 同时安装NLog.Web(或者在ASP.NET Core的情况下:NLog.Web.AspNetCore并遵循installation tutorial

  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} - 但这会使配置更复杂