将多个NLog事件与单个ASP.NET请求相关联

时间:2010-12-16 15:28:55

标签: asp.net logging nlog

我想使用日志记录系统来跟踪大型Web应用程序。到目前为止,我已经确定了NLog,因为它易于配置和API。

启用跟踪时,我希望能够看到各种用户的大量日志记录。有没有办法将各个日志行关联到一个请求?

2 个答案:

答案 0 :(得分:1)

在要求之后找到答案。

每个请求都由ASP.NET中的新线程处理, 因此,技巧是使用唯一名称标记当前线程:

HttpRequest request = HttpContext.Current.Request;
Thread.CurrentThread.Name = Guid.NewGuid().ToString() + request.UserHostAddress;

NLog可以将此信息读取为${threadname}

答案 1 :(得分:0)

有几个LayoutRenderers将输出ASP信息(我还没有为ASP.NET开发,所以我不能说哪个(如果有的话)会给你你需要的东西)。请参阅此链接以获取LayoutRenderers列表:

http://nlog-project.org/wiki/Layout_renderers

从NLog论坛(在同一个站点)我可以看到有几个人在让ASP.NET LayoutRenders输出任何东西时遇到了问题(至少在NLog 2.0中)。到目前为止推荐的解决方案(应在Beta阶段修复)是将其添加到NLog.config文件中:

<extensions>
  <add assembly="NLog.Extended" />
</extensions>

确保NLog.Extended.dll与NLog.dll

位于同一目录中

我无法在论坛中发布指向特定帖子的链接,因为该论坛不提供个别帖子的链接,但它是对2010年10月28日提出的问题的回复。问题的标题是: “NLOG和ASP.NET的问题”。