4

我可以在 .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);

这会导致消息没有属性。有没有更好的方法来做到这一点,或者我做错了什么?

4

1 回答 1

3

Microsoft-Extension-Logging (MEL) ILogger-interface 的整个想法不依赖于特定的 Logging-Framework。

如果您开始创建 NLogLogEventInfo对象,那么您不妨调用NLog.LogManager.GetCurrentClassLogger()并将其用作 Logger。

但也许这个维基页面可以给你一些想法:

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

于 2019-10-28T16:04:37.623 回答