2013-05-30 68 views
0

我已經設置爲使用log4j和Spring一起使用log4j.xml文件,它工作正常。我可以用一個控制器,它最終將做到這一點在運行時更改日誌級別:使用Spring持久log4j設置

LogManager.getLogger("logger1").setLevel(Level.toLevel(level)); 

但是,我不知道如何在關機時堅持到我的log4j.xml文件中的設置。我可以嗎?有什麼選擇?

我是新來的春天。一個不錯的簡單例子將不勝感激!

+2

它工作的另一種方式,你寫你的設置到日誌文件,他們得到拾起log4j,你的日誌設置不會持久 – dfb

回答

0

我記得的唯一方法是在關機前打開文件並寫入。我將涉及解析文件並寫入所需的屬性。

雖然請記住,你正在顛覆常用,大部分時間意味着你正在嘗試以錯誤的方式做某件事。問自己你真的需要這樣做。

0

如果您確實需要,可以撥打LoggerManager.getLoggerRepository(),然後撥打getCurrentLoggers()以獲得Enumeration。然後遍歷枚舉,讀取每個Logger的相關屬性,並將它們保存到某個地方。

但有很多原因可能是一個壞主意。

  • 除非你很聰明,否則你將最終保持大量關於動態未被覆蓋的記錄器和級別的冗餘信息。

  • 使用的實際記錄器取決於代碼,並隨着應用程序的發展而變化。您最終可能會維護不再使用的設置Loggers ...並創建它們!

  • 如果您使用Hibernate將設置保存到數據庫(例如),您可能會遇到「雞和蛋」問題。 Hibernate需要日誌記錄在啓動之前起作用,但是您需要從數據庫中獲取設置...首先。

  • 您的日誌記錄配置可能最終看起來沒有像原始log4j配置文件,因此難以理解正在記錄的內容以及未記錄的內容。

  • 如果您的應用程序中用於調整日誌記錄級別的代碼出錯,則可能會卡住。

  • 這不僅僅是IT人員期望登錄工作的方式。