代码之家  ›  专栏  ›  技术社区  ›  C Sharper

nlog变量在webapi中更改其值

  •  0
  • C Sharper  · 技术社区  · 7 年前

    我的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,包括method1和method2。

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

    1 回复  |  直到 7 年前
        1
  •  1
  •   Alexey.Petriashev    7 年前

    不应使用静态全局属性。在多线程环境中,会发生冲突。

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

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