在 appsettings.json 中更改日志级别不会应用于 NLog

Changing loglevel in appsettings.json won't get applied to NLog

我将 NLog 与 dotnet 核心应用程序一起使用,配置如下所述。 https://github.com/NLog/NLog.Web/wiki/Getting-started-with-ASP.NET-Core-2

在 nlog.config 中,如果我将 minLevel 设置为错误并启动我的应用程序,我可以在记录器上看到 logDebug 被禁用。

如果我还原回跟踪,则所有级别都设置为真(error, trace, debug, info, warning)

如果我将其放入配置文件 (appsettings.json)

"Logging": {
        "LogLevel": {
            "Default": "Error",
            "Microsoft": "Information"
        }
    }

然后什么也没有发生,所有记录器级别仍然设置为 true,可能是哪里出了问题?

正如 Snakefoot 提到的,

这是 Microsoft Extension Logging 的配置。

使用NLog + Injected .NET Core loggers(使用Microsoft Extension Logging)时,流程如下:

ILogger<MyClass> → Microsoft 扩展日志记录中的 LoggerFactory → NLog 中的 LogFactory

要配置 NLog,您应该更新 nlog.config 中的 NLog <rules>,例如

(也可能来自代码,参见 docs

<rules>
   <logger name="*" minlevel="debug" />
</rules>

请注意,如果 NLog 中的最小级别为“调试”和“错误”,您将看不到调试日志 appsettings.json

注2: 直接使用 NLog 时,例如NLog.LogManager.GetCurrentClassLogger(),您只需要配置 NLog,appsettings.json 配置不用于这些日志。