NLog 覆盖级别使用 JSON 配置

问题描述 投票:0回答:1

我有一个 Asp.NET Core 应用程序,它使用第三方库,输出具有 INFO 信息级别的消息:

_logger.LogInformation("About information...");

这是关于如何配置日志显示的(我使用的是JSON配置):

{
  "NLog": {
    "targets": {
      "console": {
        "type": "Console",
        "layout": "${logger}|${date}|${level:uppercase=true}|${message}"
      }
    }
  }
}

ThirdPartyNamespace.Runner|2024/11/12 12:24:27.141|INFO|About information...

在日志记录级别的日志中,我逻辑检查INFO。是否可以在不将代码从 INFO 更改为 DEBUG 的情况下重新定义特定记录器的日志记录级别?

这条规则不起作用(我得到一个例外:

Unhandled exception. NLog.NLogConfigurationException: 'ConditionBasedFilter' cannot assign unknown property 'level'='Debug'
)。也许有正确的工作方式?

{
  "rules": [
    {
      "logger": "ThirdPartyNamespace.Runner",
      "minLevel": "Debug",
      "writeTo": "Console",
      "filters": [
        {
          "type": "when",
          "condition": "level == LogLevel.Info",
          "action": "Log",
          "level": "Debug"
        }
      ]
    }
  ]
}
c# json asp.net-core nlog
1个回答
0
投票

您可以通过指定 minLevel 和 maxLevel 属性直接在 NLog 配置 (NLog.config) 中设置特定记录器的日志级别。

以下是仅为特定记录器设置 DEBUG 级别的示例:

<rules>
  <!-- Default rule for all loggers -->
  <logger name="*" minLevel="Info" writeTo="logfile" />
  
  <!-- Specific rule for the desired logger with DEBUG level -->
  <logger name="YourSpecificLoggerName" minLevel="Debug" writeTo="logfile" />
</rules>
© www.soinside.com 2019 - 2024. All rights reserved.