NLog 变量在 WebApi 中更改其值

NLog variable changing its value in WebApi

我的 WebApi 中有两个方法-

[HttpPost]
    public object Method1(JObject objJobject)
    {
        var log = LogManager.GetCurrentClassLogger(); 
        LogManager.Configuration.Variables["var1"] = "5";
        .
        .
    }

[HttpPost]
    public object Method2(JObject objJobject)
    {
        var log = LogManager.GetCurrentClassLogger(); 
        LogManager.Configuration.Variables["var1"] = "6";
        .
        .
    }

var1 在 nlog 配置中是可变的:- ${var:var1}

我的问题是,当我调用 Method1 时,它应该将 var1 值视为整个请求执行的 5。 当我调用 Method2 时,它应该将 var1 值视为整个请求执行的 6。

我的情况是:-

同时请求变得复杂。

例如。当调用 Method1 时,它考虑 var1=5,但同时如果用户调用 Method2,它认为 var1=6 var both Method1 和 Method2.

我要的是,整个执行应该考虑其各自的价值。

您不应使用静态全局属性。在多线程环境中你会遇到冲突。

使用事件属性:https://github.com/nlog/NLog/wiki/EventProperties-Layout-Renderer

MDLC 也可以使用,但它是某种全局环境上下文。 EventProperties 存储在 LogEvent 中,可用于布局或过滤器逻辑。