2011-05-20 81 views
8

使用標準Java日誌API(進口java.util.logging.Logger中),施工後:Java日誌API,禁用記錄到標準輸出

Logger l = Logger.getLogger("mylogger"); 

我已經可以登錄的東西。由於它沒有FileHandler,因此它不會向磁盤寫入任何內容。

l.severe("test with no handler"); 

它寫(輸出一些,不是全部)日誌消息。 如何禁用此功能? 由於事先 阿戈斯蒂諾

+0

l.setLevel(Level.OFF); – 2017-11-14 13:56:47

回答

8

問題在於,如果你不知道java util logging的默認配置。 建築事實: 0)每個記錄器,無論其名稱是否具有根記錄器作爲父記錄器。 默認事實: 1)記錄器屬性useParentHandler爲是默認 2)真實的根記錄預設具有ConsoleHandler

大二默認情況下,一個新的記錄器將其日誌記錄也發送到他的父記錄器(點1),該記錄器是根記錄器(點0),默認情況下,它們將記錄到控制檯(點2)。

刪除控制檯日誌記錄是很容易的:

Logger l0 = Logger.getLogger(""); 
l0.removeHandler(l0.getHandlers()[0]); 
1

通過禁用此功能你的意思是你不希望在所有日誌什麼嗎?如果是這樣的話,你必須是記錄器的級別設置爲NONE

例如,如果您使用的是日誌屬性文件可以設置:

mylogger.level=NONE 
+0

我想OP是想禁用登錄到他們的標準輸出。 – asgs 2011-05-20 21:25:27

+1

是的,我想禁用標準輸出的日誌記錄;我只想記錄顯式設置處理程序。 – AgostinoX 2011-05-21 09:19:20

7

標準記錄儀在Java中是在默認情況下,層次結構和子記錄器繼承父母的處理程序。試試這個來抑制父處理程序被使用:

l.setUseParentHandlers(false); 
+0

請解釋你的答案爲什麼會起作用,而不僅僅是給出答案。 – ArtB 2013-08-26 13:02:43

相關問題