Как добавить параметр в структурированное ведение журнала .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()
и используйте это как Регистратор.
Но, возможно, эта вики-страница может дать вам несколько идей: