c# - 为什么 IsDebugEnabled 在我的代码中总是 True?

标签 c# log4net

我有以下代码:

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

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

if (Log.IsDebugEnabled) { /* do time consuming stuff and log the result */

这是我的 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>

为什么 IsDebugEnabled 总是返回 True?

最佳答案

来自 the log4net manual :

Note that by default, the root logger is assigned to Level.DEBUG.

尝试:

<root>
    <level value="INFO"/>
</root>

请注意,IsDebugEnabled 由记录器级别控制。由于记录器和附加程序之间的松散耦合,您在所有附加程序上都有 LevelMin/LevelMax 过滤器这一事实无济于事。

关于c# - 为什么 IsDebugEnabled 在我的代码中总是 True?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5594665/

相关文章:

c# - Windows CE 6.0 (OEM 5.37) 不显示沙漏光标

log4net - Log4net追加器阈值不起作用

logging - Log4net/日志记录 - 您发现什么有用?

nhibernate - 计算 NHibernate 在单元测试中执行的查询数

Log4net:每个类的单独日志文件

c# - log4net 不记录调试语句

c# - 运行测试时特定机器上出现 OutOfMemoryException

c# - 在 ASP .NET MVC 中更改角色权限

c# - .NET Core Razor 类库似乎无法在 Linux 上运行

c# - 是否有命令将 nuget.exe 指向特定的 NuGet.Config 文件?