밤 늦게까지 여는 카페

[Python] 예외 처리 시 스택 트레이스 남기는 방법 - traceback 본문

For Fun/잡학 지식

[Python] 예외 처리 시 스택 트레이스 남기는 방법 - traceback

Jㅐ둥이 2025. 4. 5. 18:51
반응형

안녕하세요. 오랜만에 쏟아지는 비가 정말 반갑습니다.
봄비가 반가운 와중에 '2주 전에 이렇게 쏟아졌다면 산불 피해가 훨씬 줄었을텐데' 하는 원망감도 조금 생기네요...

오늘은 파이썬에서 예외 처리 시 스택 트레이스를 남기는 방법을 정리해보겠습니다.


1. 예외 처리 시 스택 트레이스를 남길 수 없어서 불편했던 과거

파이썬에서 발생한 exception을 로그로 남기고 싶은데 어떻게 하고 있으셨나요?‌
저는 다음과 같이 exception을 남겼습니다.

try:
  func1(param1, param2)
except Exception as e:
  logger.info(f"Exception occurred: {repr(e)}")

 

이 방법은 최상단의 Exception의 정보만 남겨서 Exception이 발생했을 때의 스택 트레이스를 확인할 수 없다는 단점이 있습니다.

  • 저는 스택 트레이스가 출력되어야 정보가 충분하다는 느낌을 받더라고요.

2. traceback 라이브러리‌

찾아보니 traceback이라는 라이브러리가 있었습니다.
traceback 라이브러리를 이용하면 다음과 같이 로그를 남길 수 있습니다!

  • format_exc 메소드를 이용해서 스택 트레이스를 변수에 문자열로 저장할 수 있습니다!
try:
  func1(param1, param2)
except Exception as e:
  logger.info(f"Exception occurred: {traceback.format_exc()}")

 

 

처음부터 가능했던 방법이었는데 너무 늦게 알았다는 것이 참 아쉽네요...ㅜ

반응형