我想使用日志记录系统来跟踪大型Web应用程序。到目前为止,我已经确定了NLog,因为它易于配置和API。
启用跟踪时,我希望能够看到各种用户的大量日志记录。有没有办法将各个日志行关联到一个请求?
答案 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的问题”。