2014-03-24 1 views
9

방금 ​​PyCharm으로 시작 했으므로 디버그 표시 방법은 & 정보 경고입니까?Python3 및 PyCharm - 실행/디버그에서 로깅 수준 디버그

/home/username/someproject/.someprojectenv/bin/python3/home/username/someproject/go.py 
warn message 
error message 
critical message 

Process finished with exit code 0 

그러나 디버깅, 표시되지 않습니다 정보 :

import logging 
logger = logging.getLogger('tipper') 
logger.setLevel(logging.DEBUG) 
logger.debug('debug message') 
logger.info('info message') 
logger.warn('warn message') 
logger.error('error message') 
logger.critical('critical message') 

는, 오류, 중요한 모든 쇼를 경고한다.

답변

12

이 문제는 PyCharm과 관련이 없지만 로깅 구성이 작동하는 방식과 관련이 있습니다. 당신이 정상적인 파이썬 대화 형 세션에 표시 한 코드를 작성하려고하면 동일한 출력을 얻을 :

>>> import logging 
>>> logger = logging.getLogger('tipper') 
>>> logger.setLevel(logging.DEBUG) 
>>> logger.debug('debug message') 
>>> logger.info('info message') 
>>> logger.warn('warn message') 
warn message 
>>> logger.error('error message') 
error message 
>>> logger.critical('critical message') 
critical message 

문제는 logger의에게 수준 충분하지 않은 설정이다! 또한 로거에 핸들러를 추가해야합니다. 그렇지 않으면 로거가 단순히 메시지를 체인 위로 전달합니다. 메시지는 기본적으로 logging.WARN 수준의 root 로거에서 끝나며 따라서 DEBUG 레벨 메시지를 삭제합니다.

>>> logger.addHandler(logging.StreamHandler()) 
>>> logger.debug('test') 
test 

당신은 각 로거에 대해 하나 이상의 핸들러를 설정할 수 있으며, 각 핸들러는 다른 로깅 수준을 가질 수 있습니다 : 당신이 logger에 핸들러를 추가하는 경우

그러나 모두 잘 작동합니다.

로거 및 처리기 수준에 대한 추가 정보는 this 질문을 참조하십시오. 나는 그것이 정말 고급 구성을 가지고 있기 때문에, 신중하게 logging 모듈과 다양한 가이드 (예 : logging How-To에 대한 설명서를 읽어도 좋을 것. python3.2에서

또한

당신이를 지정할 수 dictConfig 기능이있다 구성을 사전으로 로깅 계층 구조로 설정하여 손으로 모든 처리기와 로거를 수동으로 만들지 않아도됩니다.

+1

@diimdeep 무슨 뜻입니까? 현재 귀하의 의견은 건설적인 것이 아니기 때문에 신고하고 삭제할 수 있습니다. 어떤 식 으로든/upvote/downvote upvote 대답/질문의 가치를 평가할 수 있습니다. 당신이 대답을 이해하지 못한다면 어떤 해명, 또는 당신이 다른 질문에 대답을 추가해야합니다 현재 답변에 잘못된 점을 설명해주십시오. 그렇지 않으면 당신이 물어야하는 * 새로운 질문 *이 있습니다. 그럼 어느 것이지? – Bakuriu

+0

나는 핸들러를 추가하려고 시도했지만 잘못했기 때문에 나에게 도움이되지 않았다. 이제는 알아 낸다. – diimdeep