Переменная NLog меняет свое значение в WebApi - PullRequest
0 голосов
/ 23 мая 2018

У меня есть два метода в моей 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 Ответ

0 голосов
/ 23 мая 2018

Вы не должны использовать статические глобальные свойства.В многопоточном окружении вы получите коллизии.

Используйте EventProperties: https://github.com/nlog/NLog/wiki/EventProperties-Layout-Renderer

Также можно использовать MDLC, но это своего рода глобальный контекст окружения.EventProperties хранится в LogEvent и может использоваться в логике макета или фильтра.

...