파이썬 문법

[python] 에러 발생 시 로그로 남길 때는 꼬옥 traceback을 써주기

sovelop 2024. 1. 5. 11:12

logging 을 import하여 exc_info를 로그로 남길 수도 있겠지만..

 

나는 에러가 발생했을 때 마다 slack으로 정확히 어떤 파일의 몇번째 줄에서 문제가 발생했는지 알림을 받고 싶었다.

 

 

traceback 모듈을 사용해보자.

 

히힛 신난다~ 이제 로그 파일 매번 열어서 찾아보지 않아도 된다~

 

 

 

 

traceback은 파이썬의 표준 라이브러리에 포함된 모듈이므로 별도 설치가 필요없다. :D

(구버전 파이썬을 써야만 하는 상황이라 버전 안맞을까봐 걱정할 필요가 없다!)

 

에러 정보를 콘솔에 출력(print) 하려면

traceback.print_exc()

특정 변수에 예외정보를 담으려면?

try:
    test = "이건 테스트지"
    print(test[100]) # test 문자열의 100번째 인덱스는 없으니 에러가 발생하지요

except Exception as e:
	import traceback
    exception_str = traceback.format_exc()

    # 슬랙에 에러 정보를 알리는 함수
    alert_slack(eception_str, ...)

 

이러면

exception_str 함수에는

string index out of range Traceback (most recent call last):
  File "D:\dev\test.py", line 85, in my_func
    print(test[100])
IndexError: string index out of range

 

이렇게 어떤 파일의 몇번째 줄, 어떤 함수의 어떤 부분에서 문제가 생겼는지에 대한 에러 정보를 담을 수 있다. :)

정말 편하고 쉬운데 이걸 왜 이제야 썼나~

반응형