2011-12-02 26 views
1

我一直在使用log4j來進行記錄的多個應用程序,從單獨的log4j.properties每個加載設置從classpath(只是磁盤上的文件,而不是在一個.jar或任何加載的會使其成爲只讀)。在每個這些應用程序中,我想允許通過常規UI更新日誌級別。更新的log4j並log4j.properties更新

我用一種常見的實用類此,這是在應用程序之間共享。我可以在應用程序的整個生命週期中這樣做,但由於更改不會持久保存到適當的log4j.properties文件中,所以在下次重新啓動時,它會重置爲屬性文件中的特定級別。

因爲它只是從classpath加載的,我不知道的完整路徑,在每個應用程序日誌文件,並且由於它是一個通用類,我寧可不硬編碼路徑。 有沒有辦法讓log4j回寫其對磁盤配置的更改?

回答

2

我建議你翻車發揮得淋漓盡致的問題。

總是寫更改磁盤上的log4j.properties文件,然後安裝檢查該文件中的變化和更新相應的日誌級別的監聽器。

+1

我認爲亞歷山大的答案可能和你所能得到的一樣好。雖然,比你想要的更狡猾。 我知道log4j使用PropertyConfigurator讀取它的屬性文件,但我看不到任何'寫入'或'輸出'方法。 DOMConfigurator是XML版本,但再次看不到任何輸出方法。 – davidfrancis