Python에서 포착되지 않은 예외 기록
Python 프로그램에서 예외가 발생하고 현재 실행 블록 내에서 처리되지 않으면 자동으로 표준 오류(stderr)로 인쇄됩니다. 이 동작은 특히 로깅 또는 디버깅 목적으로 모든 예외를 캡처하려는 경우 불편할 수 있습니다.
이 문제를 해결하려면 캡처되지 않은 예외를 자동으로 출력하도록 로깅 모듈을 구성할 수 있습니다. 다음은 login.Exception() 함수를 활용하는 솔루션입니다.
<code class="python">try: raise Exception('Throwing a boring exception') except Exception as e: logging.exception(e)</code>
이 접근 방식은 효과적이지만 각 예외를 명시적으로 처리하고 로깅해야 합니다. 보다 자동화된 솔루션을 위해 포착되지 않은 예외 처리를 담당하는 Python의 sys.Exceptionhook 함수를 재정의할 수 있습니다.
다음은 다음과 같은 추가 기능을 포함하는 전체 로깅 구성의 예입니다.
<code class="python">import sys import logging logger = logging.getLogger(__name__) handler = logging.StreamHandler(stream=sys.stdout) logger.addHandler(handler) def handle_exception(exc_type, exc_value, exc_traceback): if issubclass(exc_type, KeyboardInterrupt): sys.__excepthook__(exc_type, exc_value, exc_traceback) return logger.error("Uncaught exception", exc_info=(exc_type, exc_value, exc_traceback)) sys.excepthook = handle_exception if __name__ == "__main__": raise RuntimeError("Test unhandled")</code>
이 구성을 사용하면 포착되지 않은 모든 예외가 로깅 모듈에 의해 자동으로 기록됩니다.
위 내용은 Python에서 포착되지 않은 예외를 기록하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!