Структурированное ведение журнала с Common.Logging и NLog

У меня последняя версия Common.Logging (3.4.1) и NLog (4.5.11) в моем проекте. Были выполнены инструкции, чтобы связать Common.Logging с NLog в app.config, и теперь ведение журнала работает.

Теперь я хочу иметь структурированное ведение журнала:

private static readonly ILog _logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);

var message = new IDontKnowWhat("A structured message for ClientId {ClientId}", ClientId.ToString());
_logger.Info(message);

Вышеупомянутый псевдокод, я не знаю, как создать объект сообщения. И, похоже, _logger.InfoFormat работает с String.Format вместо структурированного ведения журнала.

Обеспечивает ли Common.Logging структурированное ведение журнала, помимо использования ThreadVariablesContext / GlobalVariablesContext / NestedThreadVariablesContext?


person Michel van Engelen    schedule 21.01.2019    source источник
comment
Думаю, вы ждете появления этой проблемы: github.com/net-commons/common- logging / issues / 159 (К сожалению, исправление этого будет критическим изменением, поскольку Common-Logging по какой-то причине пытается выполнить синтаксический анализ и форматирование, вместо того, чтобы позволить структуре ведения журнала выполнять эту работу). SerilogLogger выполняет взлом, чтобы обойти ограничения Common-Logging-Framework, поэтому может работать со структурированным ведением журнала.   -  person Rolf Kristensen    schedule 21.01.2019
comment
Кажется, это действительно так ... Сейчас я пробую LibLog, пока мы говорим. У меня есть структурированное ведение журнала, работающее с комбинацией LibLog / NLog, только проблемы с отображением информации, которую я передаю через OpenMappedContext.   -  person Michel van Engelen    schedule 22.01.2019


Ответы (2)


К счастью для меня, команда разработчиков Common.Logging в настоящее время исправляет это: Common.Logging .NLog45 с поддержкой структурированного ведения журнала № 176

person Michel van Engelen    schedule 23.01.2019

Проверьте serilog, чтобы иметь структурированное ведение журнала. Если ваши требования заключаются в использовании NLog, в serilog также есть приемник NLog.

person Vitor Paulino    schedule 21.01.2019
comment
Мое требование - использовать Common.Logging со структурированным ведением журнала. Если есть хорошие примеры Common.Logging с помощью Serilog, я могу попробовать это. Я был бы счастливее, когда смогу заставить его работать с NLog, поэтому мне не нужно перенастраивать все мои домены приложений. - person Michel van Engelen; 21.01.2019
comment
Если это поможет, есть пример информации Common.Logging + Serilog в: github.com/CaptiveAire/ Common.Logging.Serilog # readme - person Nicholas Blumhardt; 22.01.2019