명시적으로 처리하지 않는 한 Python 예외는 기본적으로 프로그램의 표준 오류 스트림(stderr)으로 출력됩니다. 그러나 포착되지 않은 예외를 대신 로깅 모듈을 사용하여 기록하는 것이 바람직한 경우가 있을 수 있습니다.
잡히지 않은 예외를 기록하는 전통적인 접근 방식은 Except 블록 내에서 login.Exception(e) 메서드를 수동으로 사용하는 것입니다. , 아래에 설명된 대로:
<code class="python">try: raise Exception, 'Throwing a boring exception' except Exception, e: logging.exception(e)</code>
그러나 포착되지 않은 모든 예외에 대해 자동으로 login.Exception(...)을 호출하면 수동 단계가 제거됩니다.
다음을 고려하세요. 다음 코드 조각:
<code class="python">import sys import logging # Custom logger with handler for stdout logger = logging.getLogger(__name__) handler = logging.StreamHandler(stream=sys.stdout) logger.addHandler(handler) # Custom exception handler to log uncaught exceptions def handle_exception(exc_type, exc_value, exc_traceback): # Ignore KeyboardInterrupt for Ctrl + C exit 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)) # Assign custom exception handler sys.excepthook = handle_exception if __name__ == "__main__": raise RuntimeError("Test unhandled")</code>
이 수정된 스크립트는 여러 주요 작업을 수행합니다.
기본 예외 핸들러를 handler_Exception으로 재정의하면 포착되지 않은 예외가 구성된 로거를 사용하여 자동으로 기록되므로 가시성이 향상되고 디버깅이 용이해집니다.
위 내용은 로깅 모듈을 사용하여 Python에서 처리되지 않은 예외를 어떻게 기록할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!