Как добавить параметр в структурированное ведение журнала .Net Core, не ссылаясь на него в сообщении? - PullRequest
1 голос
/ 28 октября 2019

Я могу сделать это в ядре .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 Ответ

2 голосов
/ 28 октября 2019

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

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

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

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

...