为什么IsDebugEnabled在我的代码中总是为True?
我有以下代码:为什么IsDebugEnabled在我的代码中总是为True?
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?
注意,默认情况下,根记录器被分配到Level.DEBUG。
尝试:
<root>
<level value="INFO"/>
</root>
注意IsDebugEnabled
由记录电平控制。由于记录器和appender之间的耦合松散,您在所有appender上都有LevelMin/LevelMax过滤器的事实并没有帮助。
这个技巧。谢谢! – 2011-04-08 12:24:43
定义为rootCategory RollingFileAppender进行
你需要调用
XmlConfigurator.Configure(new FileInfo("log4net.config"));
调用LogManager.GetLogger
方法之前。我会建议您在启动应用程序时进行此操作。因为现在的代码是这样的,所以在你已经实例化它之前,它不会配置记录器。
这是因为根级值没有设置。
<root>
<appender-ref ref="LogFileAppender" />
<appender-ref ref="ConsoleAppender" />
</root>
默认情况下,它将采用所有级别。 通过将根级值定义为INFO
,WARN
,ERROR
和FATAL
将解决您的问题。
为什么downvote? – 2012-10-03 14:37:38
你看过这个问题吗(http://stackoverflow.com/questions/220021/how-do-i-configure-log4net-so-that-log-isdebugenabled-is-true)。接受的答案看起来对你有用 – 2011-04-08 11:58:16
IsDebugEnabled设置在哪里? – 2011-04-08 11:58:21
@RB我已经调用XmlConfigurator.Configure。 – 2011-04-08 12:06:04