2013-07-23 109 views
7

我要添加新日誌文件。這個是我的appender:log4net的不寫入文件

<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender"> 
    <file value="mylogfile.txt"/> 
    <appendToFile value="true"/> 
    <rollingStyle value="Size"/> 
    <maxSizeRollBackups value="5"/> 
    <maximumFileSize value="10MB"/> 
    <staticLogFileName value="true"/> 
    <filter type="log4net.Filter.StringMatchFilter"> 
    <stringToMatch value="test"/> 
    </filter> 
    <filter type="log4net.Filter.StringMatchFilter"> 
    <stringToMatch value="error"/> 
    </filter> 
    <filter type="log4net.Filter.DenyAllFilter"/> 
    <layout type="log4net.Layout.PatternLayout"> 
    <conversionPattern value="%date [%thread] %level %logger - %message%newline%exception"/> 
    </layout> 
</appender> 
<root> 
    <level value="All"/> 
    <appender-ref ref="RollingFileAppender"/> 
</root> 

,並在我的班級我添加

[assembly: XmlConfigurator(Watch = true)] 

,我添加訪問大家的文件但是:log4net不寫入文件。爲什麼?

回答

23

log4net的失敗。設計的自負是沒有日誌記錄比取消應用程序更好。爲了弄清楚什麼是錯的,加入這個關鍵是你的[應用程序/網絡] config文件打開log4net的內部調試:

<appSettings> 
    <add key="log4net.Internal.Debug" value="true"/> 
</appSettings> 

調試消息將被寫入到控制檯或System.Diagnostics.Trace系統。 Phill Haack的更多詳細信息,請訪問http://haacked.com/archive/2006/09/26/Log4Net_Troubleshooting.aspx/

Log4net可能有任何故障原因。對於初學者來說,日誌文件目錄中的權限問題(特別是對於服務器進程而言,您可能在安全權限集合下運行)。

+0

外觀極好小費!在2分鐘內解決了我被困一個小時的問題。 – StinkyCat

+0

這似乎不適用於我,直到我意識到調試的輸出轉到立即窗口,而不是輸出 – JayJay

0

您需要初始化記錄在您的應用程序的第一步,並從相同的組件,你有[assembly]標籤:

docs

因此,如果您使用的配置必須調用log4net 以允許其讀取屬性。對 LogManager.GetLogger的簡單調用將導致讀取和處理調用程序集 上的屬性。 因此,在加載和調用任何外部程序集之前,必須在應用程序啓動期間儘早進行日誌記錄 調用,並且必須儘早調用 。

添加這樣的事情在你啓動時的代碼:默默時,有一個問題

LogManager.GetLogger("Initialises logging from assembly attributes"); 
0

您應該添加該配置部分:

<configSections> 
<section name="log4net"  type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/> 
</configSections> 

指log4net的配置。