2012-05-17 84 views
2

在Python中功能強大的日誌記錄內置模塊中,可以通過調用例如logging.disable(logging.INFO)來禁用某個級別以下的所有日誌。如何在Python中記錄模塊中取消logging.disable()命令?

我沒有找到如何重置或撤銷doc中的這個設置。

我的目的是通過調用setUp()中的logging.disable,然後調用tearDown()中的(what?),在執行unittests時禁用並重新啓用信息和調試級別日誌。

注意:如果我有logger個實例,我知道該怎麼做:keep logger.level,設置更高的級別,然後將其設置回tearDown()。我寧願用一種方法來靜音所有記錄器,而不是明確地選擇它們。

+0

有你打過電話logging.disable( )再次提高日誌記錄級別? –

+0

@MikeCorcoran這將禁用更多的日誌。我可以嘗試禁用(logging.DEBUG),但這會靜音調試消息。 –

+0

嘗試將零傳遞給logging.disable() –

回答

7

它看起來像答案是調用logging.disable(logging.NOTSET)

import logging 

logger = logging.getLogger('testlog') 
handler = logging.FileHandler('\\path\\to\\testlog.log') 
formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s') 
handler.setFormatter(formatter) 
logger.addHandler(handler) 
logger.setLevel(logging.INFO) 

logger.error("some error occurred") 
logger.info('some info msg') 
logging.disable(logging.ERROR) 
logger.info('another info msg') 
logging.disable(logging.NOTSET) 
logger.info('last info msg') 

結果與此輸出日誌文件:

2012-05-17 11:09:24,441 ERROR some error occurred 
2012-05-17 11:09:24,443 INFO some info msg 
2012-05-17 11:09:24,443 INFO last info msg 
+0

謝謝。似乎這些信息從文檔中缺失。 –

+1

我編輯答案使用常量logging.NOTSET而不是神奇的「0」。 –

+0

事實上,我的問題是具有正確答案的http://stackoverflow.com/questions/6948190/python-logging-reverse-effects-of-disable的副本。沒有找到任何「標記爲僞裝」按鈕,也許我沒有足夠的業力或徽章... –

相關問題