我可以在 .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);
这会导致消息没有属性。有没有更好的方法来做到这一点,或者我做错了什么?
最佳答案
Microsoft-Extension-Logging (MEL) ILogger-interface 的整个想法不依赖于特定的 Logging-Framework。
如果你开始创建 NLog LogEventInfo
-objects,那么您不妨调用 NLog.LogManager.GetCurrentClassLogger()
并将其用作记录器。
但也许这个维基页面可以给你一些想法:
https://github.com/NLog/NLog.Extensions.Logging/wiki/NLog-properties-with-Microsoft-Extension-Logging
关于c# - 如何将参数添加到 .Net Core 结构化日志记录而不在消息中引用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58588339/