Нужно ли самому очищать NLog MDLC? - PullRequest
0 голосов
/ 18 октября 2018

Я использую NLog 4.5.10 с C # 4.7.1 внутри REST-сервера.Там я использую метод MappedDiagnosticsLogicalContext.Set(item, value) для добавления некоторых параметров запроса в мое лог-сообщение.

Вопрос сейчас: нужно ли их очищать вручную или эти словари тоже мусор?

Насколько я знаю, словари привязаны к текущему потоку (используя ThreadId?).Что происходит, когда у меня много запросов и ThreadId снова начинает считать с нуля?Может ли случиться так, что значения последнего потока с тем же Id все еще там, или эти объекты уничтожены, когда уничтожается соответствующий поток?

С уважением, Даниэль

1 Ответ

0 голосов
/ 21 октября 2018

Асинхронный контекст будет «разрушен», когда объект потока будет собирать мусор.Но если поток живет в пуле потоков, то он может жить "навсегда".

Возможно, вы можете использовать SetScoped:

using (MappedDiagnosticsLogicalContext.SetScoped("Property", "PropertyValue")) {
    // "Property" item is present in current context
}

См. Также https://github.com/NLog/NLog/wiki/MDLC-Layout-Renderer#scoped-item

...