我希望能够在生产中打开nLog中的跟踪级别日志记录,但仅限于当前的Web请求。
换句话说,我希望能够做点像......
http://mywebsite.com?logeverything=true
...这将执行跟踪级别的日志记录,但仅针对该Web请求,而不是同时发生的数百个其他请求。我还希望该请求的日志转到不同于其他日志记录的文件。查询字符串的可接受替代方法是打开跟踪级别的日志记录,但前提是Web请求是本地的。
我可以编写自己的Logger类并覆盖nLog日志方法来执行这些操作,但我的Web项目使用了许多不同的程序集,并且切换所有项目以使用新的记录器类将是一个疼痛
有人做过这样的事吗?
答案 0 :(得分:1)
这可以在不需要包装的情况下完成。
同时安装NLog.Web(或者在ASP.NET Core的情况下:NLog.Web.AspNetCore并遵循installation tutorial
在c#
在.config
中过滤日志<logger name="*" writeTo="myFile">
<filters>
<when condition="${aspnet-session:Variable=myRequest} != 1" action="Ignore" />
</filters>
</logger>
${aspnet-request-url}
- 但这会使配置更复杂