我想使用日志系统来跟踪大型 Web 应用程序。到目前为止,我已经选择了 NLog,因为它易于配置和 API。
启用跟踪后,我希望看到各种用户的大量日志记录。有没有办法将各个日志行关联到单个请求?
询问后找到了答案。
每个请求都由 ASP.NET 中的一个新线程处理,因此诀窍是用唯一的名称标记当前线程:
HttpRequest request = HttpContext.Current.Request;
Thread.CurrentThread.Name = Guid.NewGuid().ToString() + request.UserHostAddress;
该信息可以被 NLog 读取为${threadname}
有几个 LayoutRenderer 会输出 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”。