Log4Net日志显示在控制台窗口中
本文关键字:窗口 控制台 日志 显示 Log4Net | 更新日期: 2023-09-27 17:58:07
我遇到了与大多数人使用Log4net相反的问题。我有一个基本的滚动日志附加程序,我在代码后面使用INFO、WARN和ERROR级别。我在app.config中关闭了调试。它仍然将日志数据推送到控制台窗口,此外还有滚动日志附加程序。
我该如何阻止这种行为?看着控制台窗口简直是噩梦。
我的配置:
<log4net debug="false">
<appender name="RollingFileAppender"
type="log4net.Appender.RollingFileAppender">
<file type="log4net.Util.PatternString"
value="milliondollars.log"/>
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<rollingStyle value="Composite"/>
<filter type="log4net.Filter.LevelRangeFilter">
<acceptOnMatch value="true" />
<levelMin value="INFO" />
<levelMax value="FATAL" />
</filter>
<datePattern value="yyyyMMdd"/>
<maxSizeRollBackups value="100"/>
<maximumFileSize value="15MB"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %-5level %logger: %message%newline" />
</layout>
</appender>
<root>
<level value="ALL" />
<appender-ref ref="RollingFileAppender" />
</root>
</log4net>
好吧,看起来你不想放弃更多的细节。。。
我能想到以下可能的原因:
- 在任何
<logger>
或<root>
节下都列出了控制台附加程序 - 以编程方式注册控制台附加程序
- 您有一个记录器包装器,它总是运行Console.Write line before logging
根据您提供的其他信息,我可以看到一些东西。首先,记录所有消息(包括DEBUG消息)。您只是没有显示log4net调试信息。至于为什么要向控制台窗口写入,我建议查看记录器消息的包装器。也许你是在给控制台写信。
此外,在调试模式下遍历程序的执行过程。查看正在写入控制台的行。
我的问题是在创建记录器实例时使用它;
log4net.Config.BasicConfigurator.Configure();
ILog log = log4net.LogManager.GetLogger(typeof(Program));
我花了一点时间才弄清楚,这是忽略了我的配置,而是用默认值初始化。按照人们的建议,用这个代替它,效果很好;
private static readonly log4net.ILog log = log4net.LogManager.GetLogger
(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
来源:http://elegantcode.com/2007/12/07/getting-started-with-log4net/