簡體   English   中英

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 日志抽象一起使用,它也可以正常工作。 格式化日志和結構化日志都使用以下代碼來初始化記錄器

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM