我有一個java.util.logging的東西的問題...我無法記錄好,更好,最好的水平。Java日誌記錄(utils)probelm與級別
我已經在這裏找到理想的解決方案: StackOverflowPost
我創造我自己的類用於獲取相應的記錄器實例:
public static Logger getLogger(Level level, String name) {
Logger logger;
logger = (name != null) ? Logger.getLogger(name) : Logger.getAnonymousLogger();
logger.setLevel(level);
ConsoleHandler handler = new ConsoleHandler();
handler.setLevel(level);
logger.addHandler(handler);
return logger;
}
但使用它後,我的記錄器會記錄每個水平的兩倍:
private static final Logger logger = testlogger.getLogger(Level.INFO, "testname");
public static void main(String[] args) {
try {
throw new IllegalArgumentException("Uuuuu!!!");
} catch (IllegalArgumentException e) {
logger.log(Level.SEVERE, "Something wrong");
logger.log(Level.WARNING, "Something wrong");
logger.log(Level.INFO, "Something wrong");
logger.log(Level.CONFIG, "Something wrong");
logger.log(Level.FINE, "Something wrong");
logger.log(Level.FINER, "Something wrong");
logger.log(Level.FINEST, "Something wrong");
}
}
輸出:
2013年7月8日9時37分08秒xxx.testclass主要SCHWERWIEGEND:有事嗎
2013年7月8日9時37分08秒xxx.testclass主要SCHWERWIEGEND:有事嗎
2013年7月8日9時37個08秒xxx.testclass主要WARNUNG:有事嗎
2013年7月8日9時37分08秒xxx.testclass主要WARNUNG:有事嗎
2013年7月8日9時37分08秒xxx.testclass主要信息:有事嗎
2013年7月8日09:37: 08 xxx.testclass main INFO:出錯了
我在猜測,Logge r已經添加了一些默認處理程序,所以我試過了:
for (Handler h : logger.getHandlers()) {
logger.removeHandler(h);
}
在添加ConsoleHanlder之前,但沒有結果。
從我剛纔提到的帖子,我明白爲了顯示更好,更細,最好的級別,我必須添加ConsoleHandler。
所以我的問題是「我如何強制記錄器只使用ConsoleHandler」?
嘿!感謝這些提示!我的實施只是一個非常快速的演示。當然,我不想完全按照這種方式使用它。 ParentHadlers的問題正是我一直在尋找的。謝謝。 –