NLog.Extensions.Logging 结构化日志
NLog.Extensions.Logging structured logs
我正在尝试使用 NLog 提供程序登录我的 .net 核心应用程序。我在 GitHub 网站上使用示例代码。格式化日志记录工作得很好,但结构化日志记录似乎不起作用。我正在使用以下代码来初始化记录器
var loggerFactory = serviceProvider.GetRequiredService<ILoggerFactory>();
loggerFactory.AddNLog();
NLog.LogManager.LoadConfiguration("nlog.config");
Logger 使用 Microsoft DI 注入到应用程序中,日志语句看起来像,其中 action 是某个复杂类型的实例
_logger.LogInformation("Test {@action}", action);
如果我不使用 Microsoft 日志记录抽象并使用 NLog 日志管理器实例化记录器,结构化日志记录工作正常
NLog.LogManager.LoadConfiguration("nlog.config");
_logger = NLog.LogManager.GetCurrentClassLogger();
如果我将 SeriLog 与 Microsoft 日志记录抽象结合使用,它也可以正常工作。格式化日志和结构化日志都可以使用以下代码来初始化 logger
loggerFactory.AddSerilog();
Log.Logger = new LoggerConfiguration()
.WriteTo.Console()
.CreateLogger();
这让我开始思考,唯一可能的解释是 NLog.Extensions.Logging(由 Microsoft 和 NLog 联合提供)尚不支持结构化日志记录,尽管 Nlog 支持。我找不到任何资料说它没有做到。
有人可以确认它是否受支持并希望指出一个工作示例吗?
Microsoft 扩展日志记录支持结构化日志记录,但不支持 @
和 $
的消息模板规范
NLog 为 ${message}
使用 Microsoft 扩展日志格式化程序,因为 Microsoft 扩展日志已经花时间解析和格式化输入模板。
NLog 能够收集日志参数以及 @
和 $
的规范。这由 JsonLayout
使用,它将自动使用它们来正确 json- 结构化日志属性的序列化(当 MaxRecursionLimit 为 1 或更高时)
我正在尝试使用 NLog 提供程序登录我的 .net 核心应用程序。我在 GitHub 网站上使用示例代码。格式化日志记录工作得很好,但结构化日志记录似乎不起作用。我正在使用以下代码来初始化记录器
var loggerFactory = serviceProvider.GetRequiredService<ILoggerFactory>();
loggerFactory.AddNLog();
NLog.LogManager.LoadConfiguration("nlog.config");
Logger 使用 Microsoft DI 注入到应用程序中,日志语句看起来像,其中 action 是某个复杂类型的实例
_logger.LogInformation("Test {@action}", action);
如果我不使用 Microsoft 日志记录抽象并使用 NLog 日志管理器实例化记录器,结构化日志记录工作正常
NLog.LogManager.LoadConfiguration("nlog.config");
_logger = NLog.LogManager.GetCurrentClassLogger();
如果我将 SeriLog 与 Microsoft 日志记录抽象结合使用,它也可以正常工作。格式化日志和结构化日志都可以使用以下代码来初始化 logger
loggerFactory.AddSerilog();
Log.Logger = new LoggerConfiguration()
.WriteTo.Console()
.CreateLogger();
这让我开始思考,唯一可能的解释是 NLog.Extensions.Logging(由 Microsoft 和 NLog 联合提供)尚不支持结构化日志记录,尽管 Nlog 支持。我找不到任何资料说它没有做到。
有人可以确认它是否受支持并希望指出一个工作示例吗?
Microsoft 扩展日志记录支持结构化日志记录,但不支持 @
和 $
NLog 为 ${message}
使用 Microsoft 扩展日志格式化程序,因为 Microsoft 扩展日志已经花时间解析和格式化输入模板。
NLog 能够收集日志参数以及 @
和 $
的规范。这由 JsonLayout
使用,它将自动使用它们来正确 json- 结构化日志属性的序列化(当 MaxRecursionLimit 为 1 或更高时)