如何为 NLog 设置每个请求的全局变量?

mrb*_*398 3 .net c# logging nlog

我正在努力以对我们的 Web 应用程序最有用的方式设置 NLogs

我的思考过程如下

  • 发起新请求
  • 生成了一个新的 guid
  • 使用 guid 记录 webapi 事件
  • 使用 guid 记录服务层事件
  • 为下一个请求生成一个新的 guid

这样可以很容易地跟踪从请求开始到结束的完整系列事件

如果线程影响此解决方案,也有我并行运行服务方法的情况

我试过设置以下内容,但${activityid}似乎没有延续到输出

https://github.com/NLog/NLog/wiki/Trace-Activity-Id-Layout-Renderer

Jul*_*ian 5

将值添加到您的httpContext并使用 NLog 读取它。

例如

HttpContext.Current.Items["myvariable"] = 123;
Run Code Online (Sandbox Code Playgroud)

在你的 NLog.config

${aspnet-item:variable=myvariable} - produces "123"
Run Code Online (Sandbox Code Playgroud)

文档中的更多示例

为此,您需要 NLog.web 或 NLog.web.aspnetcore! 安装说明