Python/Utils

파이썬 오류 메시지 자세히 출력하기 - traceback 모듈

jimmy_AI 2024. 1. 5. 01:36
반응형

Python에서 에러 메시지를 상세히 출력하여 알림 등을 받고 싶은 경우가 종종 있습니다.

단, 기본 try-except 구문에서는 오류 메시지를 상세히 출력해주지는 않는데요.

 

이 과정을 해결하기 위하여 traceback 모듈의 기능을 활용하는 방법과 예시 결과를

try-except 케이스와 비교하여 간단하게 정리해보도록 하겠습니다.

 

 

기본: try-except 구문 오류 메시지 출력

먼저, 아래와 같은 아주 간단한 로그인 함수 예시를 들어보겠습니다.

def is_success_login(id, pw, user_info):
    if user_info[id] == pw:
        return True
    else:
        return False

 

이제 user_info 딕셔너리 내에 없는 id를 조회하도록 하여 KeyError를 유발해 볼 것인데요.

먼저 try-except 구문의 기능을 통하여 오류 메시지 탐색을 시도해 보겠습니다.

try:
    user_info = {'abcd' : '1234', 'efgh' : '5678'}
    if is_success_login('ijkl', '1111', user_info):
        print('로그인에 성공하였습니다!')
    else:
        print('로그인에 실패하였습니다!')
except Exception as e:
    print('Error Message:', e)

 

캡처된 오류 메시지는 다음과 같은데요.

너무 단순하여 상세한 오류 위치와 원인을 파악하기 어려운 것을 볼 수 있습니다.

매우 단순한 오류 메시지(상세 파악 어려움)

 

반응형

 

상세: traceback 모듈 활용 오류 메시지 출력

위 케이스의 오류 메시지를 이번에는 traceback 모듈을 통하여 가져와보도록 하겠습니다.

 

모듈을 임포트하고, 윗 코드에서 except 부분을 아래와 같이 고쳐주시기만 하면 됩니다.

import traceback

...

except:
    traceback_message = traceback.format_exc()
    print(traceback_message)

 

traceback.format.exc() 메소드를 활용한 결과는 터미널에서 실행 후

오류가 발생했을 때와 유사하게 상세한 에러 메시지를 캡처할 수 있습니다.

실제 에러 메시지 캡처 예시는 다음과 같습니다.

traceback 모듈 활용 상세 에러 메시지 캡처 예시(디버깅 용이)

 

위와 같은 형태로 상세한 오류 메시지 로그를 가져올 수 있게 된다면

에러 원인 파악 및 디버깅이 크게 용이해질 수 있을 것입니다.