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 中,可用于布局或过滤器逻辑。
我的 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 中,可用于布局或过滤器逻辑。