我想以編程方式配置我的java.util.logging.Logger
。根據Oracle Docs,似乎有可能。以編程方式配置記錄器
但是這個例子說明什麼是錯在這裏:
public static void main(String[] args) {
Logger logger = Logger.getLogger("org.acme.project");
logger.setLevel(Level.SEVERE);
logger = null;
System.gc();
logger = Logger.getLogger("org.acme.project");
logger.warning("You shouldn't see this warning!");
logger.severe("But this error!");
}
如果您運行的代碼,你會看到兩個消息。但是,如果刪除logger = null;
或System.gc();
,則只會看到正確的第二個,這證明垃圾收集器僅刪除配置的記錄器,並將其保留爲Logger.getLogger(String)
並創建一個新的(默認)記錄器。爲了「解決」這個問題,我可以在某個地方舉一個特定記錄器的引用,但我認爲這不是一個好主意。
那麼如何以編程方式定義記錄器?
花了我一秒鐘才明白爲什麼我從未遇到OP的問題。這絕對是你應該使用的成語。 – Qix