Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python에서 예외(Exception)를 기록하는 가장 좋은 방법

Python에서 발생한 예외를 효과적으로 기록하려면 logging 모듈을 활용하는 것이 가장 좋습니다. 특히 logging.exception() 메서드를 사용하면 예외가 발생한 지점의 스택 트레이스(traceback)까지 함께 로그에 남길 수 있어 디버깅에 매우 유용합니다.

아래 예제처럼 try-except 블록 안에서 logging.exception()을 호출하면, 오류 메시지와 함께 어떤 코드에서 문제가 발생했는지 상세하게 확인할 수 있습니다.

예제 코드

import logging

try:
    print('toy' + 6)
except Exception as e:
    logging.exception("This is an exception log")

실행 결과

위 코드를 실행하면 다음과 같은 출력 결과를 얻을 수 있습니다.

ERROR:root:This is an exception log
Traceback (most recent call last):
  File "C:/Users/TutorialsPoint1/PycharmProjects/TProg/Exception handling/loggingerror1.py", line 3, in <module>
    print('toy' + 6)
TypeError: cannot concatenate 'str' and 'int' objects

주요 포인트

logging.exception()은 내부적으로 logging.error()와 동일한 역할을 하지만, 현재 처리 중인 예외 정보를 자동으로 추가해 준다는 점이 큰 차이입니다.

주의할 점: 이 메서드는 반드시 except 블록 내부에서만 호출해야 합니다. Python 공식 문서에서도 경고하듯이, except 블록 외부의 다른 위치에서 호출하면 처리 중인 활성 예외(active exception)가 없기 때문에 예상치 못한 오류나 비정상적인 동작이 발생할 수 있습니다.

또한 실무에서는 예외 객체 자체를 로깅하고 싶을 때 logger.error("메시지", exc_info=True) 방식을 사용하거나, logger.exception()을 그대로 사용하는 것이 일반적입니다. 두 방법 모두 스택 트레이스를 로그에 포함시켜 주므로, 운영 환경에서 오류 원인을 빠르게 추적하는 데 큰 도움이 됩니다.