【问题标题】:switch to "trace" log level, but only for current web request (nLog)切换到“跟踪”日志级别,但仅适用于当前 Web 请求 (nLog)
【发布时间】:2017-12-04 16:03:58
【问题描述】:

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

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

http://mywebsite.com?logeverything=true

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

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

有人在做这样的事吗?

【问题讨论】:

标签: asp.net logging nlog


【解决方案1】:

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

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

  2. 在 c# 中创建您的跟踪日志

  3. 写信给会话,这是您的请求
  4. 在 .config 中过滤您的日志

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-10
    • 1970-01-01
    • 1970-01-01
    • 2014-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-02
    相关资源
    最近更新 更多