首页 > 解决方案 > 尽管设置了 minLevel,但 NLog 在库项目的所有级别上进行日志记录

问题描述

我有一个带有两个项目的 dotnet 解决方案。主项目用这个正确配置NLog

services.AddLogging(loggingBuilder =>
{
    loggingBuilder
    .AddFilter("Microsoft", LogLevel.Warning)
    .ClearProviders()
    .AddNLog("NLog.config");
});

并在某些时候这样做:

    public static void ConfigureNLogLogger(LogLevel logLevel)
    {
      foreach (LoggingRule loggingRule in (IEnumerable<LoggingRule>) LogManager.Configuration.LoggingRules)
        loggingRule.SetLoggingLevels(logLevel, LogLevel.Fatal);
      LogManager.ReconfigExistingLoggers();
    }

主项目中的日志是正确的(级别禁用取决于传递给上一个方法的 logLevel)

第二个项目通过 MEF 及其 DLL 加载到主项目中,但它仍然像这样直接使用 NLog(而不是微软 ILogger)

private readonly Logger _logger = LogManager.GetCurrentClassLogger();

但是,无论日志级别如何,都会记录来自第二个项目的日志。因此,如果我不想要 TRACE 日志,在主项目中我不会得到它们,但第二个项目仍然会记录它们。

如何强制第二个项目尊重日志记录级别?

标签: c#.netnlog

解决方案


推荐阅读