Как добавить параметр в структурированное ведение журнала .Net Core без ссылки на него в сообщении?

Я могу сделать это в ядре.NET

_logger.LogInformation("Token validated {clientId}", "MyId");

А затем библиотеки журналов, такие как NLog будет знать, что есть свойство под названием clientId со значением MyId в сообщении и может отображать его особым образом.

Я пытаюсь сделать то же самое, не включая свойство в самом сообщении, но не могу его исправить. Это то, что я делал до сих пор, и это не привело к созданию собственности вNLog:

 LogEventInfo info = new LogEventInfo
 {
    Properties = {{"clientId", "MyId"}},
 };
 _logger.Log(Microsoft.Extensions.Logging.LogLevel.Information, "Token validated", info, null, info.MessageFormatter);

Это приводит к сообщению без собственности. Есть ли лучший способ сделать это или я сделал что-то не так?

1 ответ

Решение

Вся идея с интерфейсом ILogger Microsoft-Extension-Logging (MEL) не зависит от конкретной Logging-Framework.

Если вы начнете создавать NLog LogEventInfo-объекты, тогда вы можете также назвать NLog.LogManager.GetCurrentClassLogger() и используйте это как Регистратор.

Но, возможно, эта вики-страница может дать вам несколько идей:

https://github.com/NLog/NLog.Extensions.Logging/wiki/NLog-properties-with-Microsoft-Extension-Logging

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