Нужно ли самому очищать 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