【发布时间】:2020-06-25 02:13:08
【问题描述】:
log4net 1.2.11.0
我正在尝试获取任何可以让我为每个 ASP.NET 请求使用唯一值进行日志记录的东西。
我尝试了 %thread,但线程似乎被重用了。
我尝试过 %aspnet-request 和 %aspnet-session ,它们没有任何意义。
我查看了 ThreadContext.Properties 和 LogicalThreadContext.Properties,但它们也没有任何内容。
任何人都有完成这项工作的诀窍吗?我需要能够从日志文件中挑选特定请求的日志。
【问题讨论】:
-
这没有帮助。我希望有效的一种方法是有一个线程互锁计数器,我用它来设置每个请求的线程名称,%thread 似乎可以正确输出。这是一个巨大的假设,即我的请求在单个线程上端到端运行。
-
更糟糕的是,由于事情在线程池上运行,您只能设置线程名称一次! (奇怪的是,这似乎适用于 .Net 而在 Mono 上失败)
-
您可以实现一个 httpmodule,它拦截每个请求并向上下文添加一个 guid,然后该请求中的所有日志都将使用相同的唯一 ID 记录。
-
实际上是的,但我使用的是 .asmx SOAP 服务,我认为我能做到这一点的唯一地方是通过 SoapExtension。