Нужно ли самому очищать NLog MDLC?

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

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

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

С наилучшими пожеланиями, Даниэль

1 ответ

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

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

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

Смотрите также https://github.com/NLog/NLog/wiki/MDLC-Layout-Renderer

Другие вопросы по тегам