При обработке сообщений из очереди я хотел бы отслеживать несколько параметров для каждого сообщения - его идентификатор, имя пользователя и т. Д.Исходя из моих выводов MappedDiagnosticsLogicalContext.SetScoped
должно работать, есть ли способ установить несколько ключей одновременно?Количество таких полей варьируется в зависимости от известных условий, поэтому мне нужен помощник, который устанавливает все поля одновременно.К сожалению, текущий API не разрешает составление, поэтому следующая попытка не удалась:
public static IDisposable SetContext(this Dictionary<string, string> fieldValues)
{
IDisposable result = null;
foreach (var pair in fieldValues)
{
result = MappedDiagnosticsLogicalContext.SetScoped(pair.Key, pair.Value);
}
return result;
}
Этот метод удаляет только последний добавленный ключ, все предыдущие остаются там.Базовые API метода SetScoped
являются внутренними для NLog, поэтому я не могу их легко вызвать.Любые предложения о том, как заставить это работать?