2012-11-14 169 views
4

我想使用Windows服務的基本日誌記錄。log4net創建日誌文件,但不寫入它

我添加了對log4net的引用。

我加入的AssemblyInfo.cs以下幾點:

[assembly: log4net.Config.XmlConfigurator(Watch = true)] 

添加以下到我的App.config:

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <configSections> 
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821" requirePermission="false" /> 
    </configSections> 

    <!-- Log4net Logging Setup --> 
    <log4net> 
    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender,log4net"> 
     <file value="c:\\CGSD\\log\\logfile.txt" /> 
     <appendToFile value="true" /> 
     <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> 
     <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date [%thread] %level %logger - %message%newline" /> 
     </layout> 
     <filter type="log4net.Filter.LevelRangeFilter"> 
     <levelMin value="INFO" /> 
     <levelMax value="FATAL" /> 
     </filter> 
    </appender> 

    <root> 
     <level value="ALL"/> 
     <appender-ref ref="RollingFileAppender"/> 
    </root> 
    </log4net> 
</configuration> 

我在我的服務下面的代碼:

log4net.Config.XmlConfigurator.Configure(); 
    log4net.ILog log = log4net.LogManager.GetLogger(typeof(Program)); 

    log.Debug("test"); 

創建文件c:\CGSD\log\logfile.txt但沒有寫入任何內容。

我已經通過論壇整天試圖跟蹤這一個,但如果我忽略了已發佈的解決方案,我表示歉意。

+0

如果你在log.Debug行中放置了一個斷點,你會到達那一行嗎? – abellina

回答

4

您的過濾器級別看起來將被配置爲<levelMin value="INFO" />,但是您正在測試一條log.Debug消息。將您的配置更改爲<levelMin value="DEBUG" />並重試。如果這不能解決它,也可能有其他配置問題。

+0

這樣做。我改變了現在我可以看到我的日誌文件中的條目。 – user1825172

0

您需要最低等級INFO並正在嘗試記錄級別爲DEBUG的消息。正如您在文檔(http://logging.apache.org/log4net/release/manual/introduction.html)中看到的那樣,DEBUG的優先級低於INFO,因此您的消息被過濾掉了。

+0

這樣做。我改變了現在我可以看到我的日誌文件中的條目。 – user1825172