2010-07-09 62 views
0

在正常的單獨XML文件配置中,我放置在根目錄中,我的應用程序對兩個appender都能正常工作。即使AdonetAppender工作正常,RollingfileAppender也無法響應

然而,我發現一個簡單的和更有效的方式來從中讓我使用不同的應用程序相同的配置文件的靈活性外部文件來配置...

另外一個好處是,我不需要對global.asax和assembly進行任何修改。

這裏是我加入到我的web.config

<appSettings> 
    <add key="log4net.Config" value="C:\\log\Log4Net.config"/> 
</appSettings> 

此代碼是假設把配置文件在我的根目錄下的代碼。而我所需要做的就是引用log4net.dll並開始記錄。

即使我的AdoNetAppender完全正常工作,我在我的表格中立即看到消息。 但我的fileAppenders沒有創建任何文件既不記錄消息到現有的文件。這種方式只與數據庫兼容,或者我錯過了一些東西?

+0

您是否已經在不同應用程序中使用配置文件?我認爲RollingFileAppender允許其他應用程序在使用它時讀取配置文件,但不能寫入它。因此,如果您同時從兩個應用程序使用它,這可能是問題所在。 – 2010-07-09 06:25:34

+0

哦,是的,我爲2個應用程序使用相同的配置文件。這可能是問題.. 所以我想我會堅持在每個應用程序的根目錄中創建配置文件。謝謝菲利普 – Precious 2010-07-09 06:38:15

回答

1

您可以將RollingFileAppender進行的LockingModel設置爲MinimalLock迫使附加器來打開和關閉文件爲每個記錄的事件。不完全有效,如果一個應用程序嘗試同時登錄,仍有可能無法登錄,但如果您的記錄頻率足夠低,則可能就足夠了。

更好的解決方案是使用模式字符串作爲包含應用程序名稱的appender的文件名;這樣,不同的應用程序可以使用相同的配置文件,但會寫入不同的日誌文件。在大多數情況下,「%appdomain」變量將用於此目的(儘管對於web或ClickOnce應用程序,您必須獲得更多創意)。

0

標準RollingFileAppender無法從多個進程登錄到單個文件,因爲appender會鎖定文件以便在其中寫入。 log4net FAQ爲此提供了一個解決方案。

log4net FAQ

問候

相關問題