如何在不在消息中引用参数的情况下向 .Net Core 结构化日志记录添加参数?
How to add a parameter to .Net Core structured logging without referencing it in a message?
我可以在 .net 核心中做到这一点
_logger.LogInformation("Token validated {clientId}", "MyId");
然后像 NLog
这样的日志记录库会知道消息中有一个名为 clientId
的 属性,其值为 MyId
并且可以将其呈现在一个特殊的方式。
我试图在不在消息本身中包含 属性 的情况下做同样的事情,但无法确定它。这是我到目前为止所做的,它不会导致 属性 in 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 接口的整个想法不依赖于特定的日志记录框架。
如果您开始创建 NLog LogEventInfo
对象,那么您不妨调用 NLog.LogManager.GetCurrentClassLogger()
并将其用作 Logger。
但也许这个 wiki 页面可以给你一些想法:
我可以在 .net 核心中做到这一点
_logger.LogInformation("Token validated {clientId}", "MyId");
然后像 NLog
这样的日志记录库会知道消息中有一个名为 clientId
的 属性,其值为 MyId
并且可以将其呈现在一个特殊的方式。
我试图在不在消息本身中包含 属性 的情况下做同样的事情,但无法确定它。这是我到目前为止所做的,它不会导致 属性 in 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 接口的整个想法不依赖于特定的日志记录框架。
如果您开始创建 NLog LogEventInfo
对象,那么您不妨调用 NLog.LogManager.GetCurrentClassLogger()
并将其用作 Logger。
但也许这个 wiki 页面可以给你一些想法: