为什么 IsDebugEnabled 在我的代码中始终为 True?

Isa*_*son 3 c# log4net

我有以下代码:

private static readonly ILog Log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
XmlConfigurator.Configure(new FileInfo("log4net.config"));
Run Code Online (Sandbox Code Playgroud)

问题是下面的语句总是返回 True

if (Log.IsDebugEnabled) { /* do time consuming stuff and log the result */
Run Code Online (Sandbox Code Playgroud)

这是我的 log4net 配置文件_

  <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">
    <filter type="log4net.Filter.LevelRangeFilter">
      <param name="LevelMin" value="ERROR" />
      <param name="LevelMax" value="ERROR" />
    </filter>

    <param name="File" value="Log.txt" />
    <param name="AppendToFile" value="true" />
    <rollingStyle value="Size" />
    <maxSizeRollBackups value="10" />
    <maximumFileSize value="10MB" />
    <staticLogFileName value="true" />

    <layout type="log4net.Layout.PatternLayout">
      <param name="ConversionPattern" value="%5p [%d] - %m%n" />
    </layout>

  </appender>

  <root>
    <appender-ref ref="LogFileAppender" />
    <appender-ref ref="ConsoleAppender" />
  </root>
Run Code Online (Sandbox Code Playgroud)

为什么 IsDebugEnabled 总是返回 True?

Joe*_*Joe 6

log4net 手册

请注意,默认情况下,根记录器分配给 Level.DEBUG。

Try:

<root>
    <level value="INFO"/>
</root>
Run Code Online (Sandbox Code Playgroud)

Note that IsDebugEnabled is controlled by the logger level. The fact that you have LevelMin/LevelMax filters on all your appenders doesn't help, because of the loose coupling between loggers and appenders.