Я пытаюсь использовать провайдера NLog для входа в мое основное приложение .net. Я использую пример кода на сайте GitHub. Форматированное ведение журнала работает просто отлично, но структурированное ведение журнала не работает. Я использую следующий код для инициализации регистратора
var loggerFactory = serviceProvider.GetRequiredService<ILoggerFactory>();
loggerFactory.AddNLog();
NLog.LogManager.LoadConfiguration("nlog.config");
Logger внедряется в приложение с помощью Microsoft DI, и оператор ведения журнала выглядит так, где действие является экземпляром некоторого сложного типа
_logger.LogInformation("Test {@action}", action);
Если я не использую абстракцию журналирования Microsoft и создаю экземпляр регистратора с помощью диспетчера журналов NLog, структурированное ведение журнала работает нормально
NLog.LogManager.LoadConfiguration("nlog.config");
_logger = NLog.LogManager.GetCurrentClassLogger();
И если я использую SeriLog с абстракцией журналирования Microsoft, она также работает нормально. И форматированный журнал, и структурированные журналы работают, используя следующий код для инициализации регистратора
loggerFactory.AddSerilog();
Log.Logger = new LoggerConfiguration()
.WriteTo.Console()
.CreateLogger();
Это заставило меня задуматься, единственное возможное объяснение - это NLog.Extensions.Logging (предоставленный совместно Microsoft и NLog) пока не поддерживает структурированное ведение журнала, хотя Nlog поддерживает. Я не мог найти информацию, чтобы сказать, что это не делает.
Может кто-нибудь подтвердить, поддерживается ли он или нет, и, надеюсь, указать на рабочий пример?