我的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。
我想要的是,它应该考虑整个执行的各自值。
答案 0 :(得分:1)
您不应该使用静态全局属性。在多线程的环境中,你会发生碰撞。
使用EventProperties:https://github.com/nlog/NLog/wiki/EventProperties-Layout-Renderer
也可以使用MDLC,但它是某种全局环境上下文。 EventProperties存储在LogEvent中,可用于布局或过滤逻辑。