2012-12-14 1 views
4

level = CRITICAL 인 로거에 기록하려면 logger.exception 기본 동작을 변경해야합니다. 그것은 내가 바꿀 수있는 것처럼 보이지만 나는 방법을 알아 내지 못했다. 마지막 수단은 sys.excepthook이지만 거기에서 서식을 지정하기 때문에 사용하고 싶지 않습니다.logger.exception을 level = error 대신 CRITICAL로 변경 하시겠습니까?

감사합니다.

+0

바로 가기가없는 경고 수준을 사용하려면'logging.log (logging.CRITICAL, msg)'를 사용하십시오. 분명히 'logging.critical()'이있다. 이것은 맞춤 레벨을 사용하는 방법입니다. 나는 그것이 당신이 요구하고있는 것이 전부라는 것은 확실하지 않습니다. – Iguananaut

+0

당신의 의견에 따라 :'logger.exception (...)'은'logger.error (exc_info = True)'와 동일합니다. 너는 그것을 실제로 시도 했는가? 'logger.exception()'만으로는 예외를 일으키지 않습니다. 명시 적으로'raise'를 추가해야합니다. –

답변

6

이 같은 CRITICAL을 사용하여 예외를 기록 할 수 있습니다 만 CRITICAL보다는 ERROR의 수준, 단지 logger.exception처럼 행동합니다

logger.critical('Message with %s', 'arguments', exc_info=True) 

합니다.

+0

문제는 logger.exception이 로깅 수준이 아니라 예외 및 추적을 파일에 기록하기 위해 catch에 배치되는 특수 함수입니다. 일반적으로 logger.exception이 불려 가면 예외가 발생합니다. – mna

+0

@mna 'logger.exception'에 대한 좋은 점은 다르지만, * 및 * 예외를 발생시키지 말아야합니다 - 그렇지 않으면 여러 번 기록되는 동일한 예외로 끝날 수 있습니다. – deadly

관련 문제