NLog变量在WebApi中更改其值

时间:2018-05-23 05:52:40

标签: c# .net asp.net-web-api nlog

我的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。

我的情况是: -

对于同时发出的要求,情况好坏参半。

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

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

1 个答案:

答案 0 :(得分:1)

您不应该使用静态全局属性。在多线程的环境中,你会发生碰撞。

使用EventProperties:https://github.com/nlog/NLog/wiki/EventProperties-Layout-Renderer

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