【问题标题】:Changing loglevel in appsettings.json won't get applied to NLog更改 appsettings.json 中的日志级别不会应用于 NLog
【发布时间】:2019-05-28 11:46:22
【问题描述】:

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

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

如果我恢复到跟踪,那么所有级别都设置为 true (error, trace, debug, info, warning)

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

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

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

【问题讨论】:

  • 您正在显示纯 NLog Logger 对象的调试详细信息,但您已配置 Microsoft Extension Logging (MEL) LoggerFactory。 NLog 不知道 MEL 过滤器的配置。 MEL-ILogger 将根据 MEL-config 执行过滤(如果添加,则转发给 NLog-provider)。 NLog-Logger 会根据 NLog-config 进行过滤。

标签: c# .net-core nlog


【解决方案1】:

正如蛇足所说,

这是微软扩展日志的配置。

当使用 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>

请注意,如果 minlevel 在 NLog 中为“debug”且为“error”,您将看不到调试日志 appsettings.json

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多