2017-12-18 131 views
0
import logging 
# logging.basicConfig(level=logging.DEBUG) 
consoleHandler = logging.StreamHandler() 
consoleHandler.setLevel(logging.DEBUG) 
consoleHandler.setFormatter(logging.Formatter("%(asctime)s; %(levelname)s; %(message)s")) 
logging.getLogger().addHandler(consoleHandler) 

logging.debug('debug') 
logging.info('test') 
logging.warn('warn') 
logging.error('error') 
logging.fatal('fatal') 

我只得到最後三個日誌,它們等於或高於WARN。任何人都可以告訴我爲什麼?爲什麼這個python代碼過濾出的日誌比INFO低?

回答

3

您設置處理程序的級別,而不是記錄器的級別。根記錄器的級別仍然設置爲根的WARNING默認值,所以它不會將比WARNING更嚴格的任何消息傳遞給處理程序。

1

正如@ user2357112已經提到,設置級別根記錄

logging.getLogger().setLevel(logging.DEBUG) 

你的代碼將是這樣的:

import logging 
# logging.basicConfig(level=logging.DEBUG) 
consoleHandler = logging.StreamHandler() 
consoleHandler.setLevel(logging.DEBUG) 
consoleHandler.setFormatter(logging.Formatter("%(asctime)s; %(levelname)s; %(message)s")) 
logging.getLogger().addHandler(consoleHandler) 
logging.getLogger().setLevel(logging.DEBUG) 

logging.debug('debug') 
logging.info('test') 
logging.warn('warn') 
logging.error('error') 
logging.fatal('fatal')#Output 

#output 

# 2017-12-18 12:15:49,647; DEBUG; debug 
# 2017-12-18 12:15:49,648; INFO; test 
# 2017-12-18 12:15:49,648; WARNING; warn 
# 2017-12-18 12:15:49,648; ERROR; error 
# 2017-12-18 12:15:49,648; CRITICAL; fatal 
相關問題