2011-06-02 57 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/

相關問題