2012-05-17 5 views
2

파이썬의 강력한 로깅 내장 모듈에서, 예를 들어 logging.disable(logging.INFO)을 호출하여 레벨 아래의 모든 로그를 비활성화 할 수 있습니다.Python 로깅 모듈에서 logging.disable() 명령을 실행 취소하는 방법은 무엇입니까?

doc에서이 설정을 재설정하거나 실행 취소하는 방법을 찾지 못했습니다.

내 목적은 unittests 할 때 setUp()에서 logging.disable을 호출 한 다음 tearDown() (what?)을 호출하여 정보 및 디버깅 수준 로그를 비활성화하고 다시 활성화하는 것입니다.

주의 : logger 인스턴스를 제공하는 경우 어떻게해야하는지 알고 있습니다. logger.level을 유지하고 레벨을 높게 설정 한 다음 tearDown()으로 다시 설정하십시오. 나는 명시 적으로 선택하지 않고 모든 로거를 음소거하는 방법을 선호한다.

+0

은 (당신이 logging.disable 호출 시도) 높은 로깅 수준으로 다시? –

+0

@MikeCorcoran 이렇게하면 더 많은 로그가 비활성화됩니다. 난 (logging.DEBUG) 해제하려고 할 수 있지만 디버그 메시지를 음소거 것입니다. –

+0

logging.disable()에 0을 전달하십시오. –

답변

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

나는 magical "0"대신에 constant logging.NOTSET을 사용하는 대답을 편집했다. –

+0

사실 내 질문에 정답을 가지고 http://stackoverflow.com/questions/6948190/python-logging-reverse-effects-of-disable의 중복입니다. "dupe as mark"버튼을 찾지 못했습니다. 아마도 카르마 또는 배지가 충분하지 않은 것 같습니다. –

관련 문제