![](/img/trans.png)
[英]Print a multi-line message with NLog.Extensions.Logging (1.6.1)
[英]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 日志抽象一起使用,它也可以正常工作。 格式化日志和結構化日志都使用以下代碼來初始化記錄器
loggerFactory.AddSerilog();
Log.Logger = new LoggerConfiguration()
.WriteTo.Console()
.CreateLogger();
這讓我想到,唯一可能的解釋是 NLog.Extensions.Logging(由 Microsoft 和 NLog 聯合提供)尚不支持結構化日志記錄,即使 Nlog 支持。 我找不到任何信息說它不這樣做。
有人可以確認它是否受支持並希望指出一個工作示例嗎?
Microsoft Extension Logging 支持結構化日志記錄,但不支持@
和$
消息模板規范
NLog 對${message}
使用 Microsoft Extension Logging 格式化程序,因為 Microsoft Extension Logging 已經花時間解析和格式化輸入模板。
NLog 能夠收集日志參數以及@
和$
規范。 這由JsonLayout
使用,它將自動使用它們來正確地對結構化日志屬性進行 json 序列化(當 MaxRecursionLimit 為 1 或更高時)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.