【问题标题】:NLog variable changing its value in WebApiNLog 变量在 WebApi 中更改其值
【发布时间】:2018-05-23 05:52:39
【问题描述】:

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

我想要的是,它应该在整个执行过程中考虑其各自的价值。

【问题讨论】:

  • 这两种方法都是 post 方法,控制器如何区分调用哪一个?。
  • 那你根本不想使用变量。您可能想使用MDLC (mapped diagnostics logical context) renderer
  • @mikez 看来你是 nlog 大师,我从早上开始就在搜索这个,几乎每个 nlog 问题都有你的答案,在发布我的问题时我正在祈祷,愿 mykez 解决我的问题,在这里你想出了解决方案,它对我有用..!!!非常感谢
  • @mikez 猜猜你可以发表你的评论作为答案,所以它可以被接受。

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


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-01
    • 1970-01-01
    • 2023-01-02
    • 2019-10-11
    • 2019-03-21
    相关资源
    最近更新 更多