2011-06-02 147 views
4

我有相反的问题,因为大多数人使用Log4net。我有一个基本的滚动日志appender,我在后面的代码中使用INFO,WARN和ERROR级别。我在app.config中关闭了debug。除了滚动日志appender之外,它仍然将日志数据推送到控制台窗口。Log4Net日志显示在控制台窗口中

如何阻止此行为?它使控制台窗口成为一场噩梦。

我的配置:

<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> 
+0

我使用上述的配置在一个全新的控制台项目和它做同样的事情。只有一个appender,它仍然发送到控制台窗口。是什么赋予了? :/ – 2011-06-02 01:43:48

+0

认为这里缺少的部分是代码来创建记录器的实例,他可能也有类似的问题,我http://stackoverflow.com/a/18122298/427684 – Coops 2013-08-08 09:22:03

回答

1

根据您所提供的附加信息中,有一对夫妇的事情,我可以看到。首先,您记录所有消息(包括DEBUG消息)。你只是没有显示log4net调试信息。至于你为什么写入控制台窗口,我会建议看看你的记录器消息的包装。也许你正在写控制台。

此外,走过你的程序在调试模式下执行。看看哪行写入您的控制台。

+0

没有,只是一个附加器:/ – 2011-06-02 00:40:53

+0

我检查,记录器类只是调用log.Info或log.Error – 2011-06-02 00:59:58

+0

@汤姆惠特克 - 这听起来很疯狂,但你确定你是从正确的配置文件拉?也许你有一个旧的配置文件存储在其他地方,而不是你认为正在被读取的地方。 – IAmTimCorey 2011-06-02 01:12:51

1

嗯,好像你不想放弃任何更多的细节......

我能想到的folloiwng可能的原因:

  • 你控制台的appender在任何<logger>要么上市或<root>部分
  • 您的appender编程
  • 你有一个记录器包装注册控制台,总是登录
  • 之前运行Console.Write线
+0

我assembly.cs有: [装配:log4net.Config.XmlConfigurator(通过ConfigFile =“log4net的。配置”,手表= TRUE)] 我在这样的初始化记录: 私有静态log4net.ILog日志= log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod()DeclaringType); 没有所有三个。不幸的是:/ – 2011-06-02 00:59:20

+0

是的,只有配置中的一个引用被粘贴在 – 2011-06-02 01:43:13

+0

以上@Tom Whitaker - 我把你的配置文件和你提供的设置。我可以看到创建了'milliondollars.log'文件并在里面测试日志行。同时,在控制台窗口中没有任何东西可以尝试从头开始创建简单的项目并查看是否有相同的问题? – 2011-06-02 01:46:51

0

我的问题创造了记录器的实例时,使用此;

 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/