2010-10-30 57 views
5

我log4net的配置與之前:log4net的等待,直到應用程序池回收記錄到mssql2008數據庫

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "../ProjectName/Log4Net.config", Watch = true)] 

我有2個追加程序配置: 1. AdoNetAppender記錄到日誌表mssql2008數據庫。 2. FileAppender,只是看起來像這樣:

<appender name="FileAppender" type="log4net.Appender.FileAppender"> 
    <file value="c:\log-file.txt" /> 
    <appendToFile value="true" /> 
    <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> 
    <layout type="log4net.Layout.PatternLayout"> 
    <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" /> 
    </layout> 
</appender> 

的問題是,當一個動作被記錄下來,它會立即出現在日誌file.txt的。在我執行iisreset,重新編譯Web代碼或回收應用程序池之前,它不會顯示爲數據庫中的條目。

配置看起來不錯,因爲該操作最終會記錄到數據庫。我只是不明白爲什麼延遲。

有人可以給我一個理由或告訴我如何解決它?

回答

8

AdoNetAppender是一個緩衝appender。如果你想它直接寫入數據庫,你需要設置緩衝區大小爲1:

<bufferSize value="1" /> 
+0

感謝^^這個答案斯蒂芬,非常感謝。 – 2013-01-04 15:43:08

+0

很棒的回答。每隔幾分鐘或當我回收IIS應用程序池時,我只會將日誌發送到桌面。無法弄清楚,直到我看到這個帖子關於緩衝區大小..很有道理。謝謝Stefan – barneymc 2013-11-22 11:21:01

相關問題