본문 바로가기
Develop

[Python] except 상세 logging 방법

by 너드나무 2024. 11. 27.
반응형

단순 except Logging

  • 부족한 디버깅 정보
    • 예외의 구체적인 발생 위치(파일, 라인 번호)가 출력되지 않음.
    • 예외가 발생한 호출 스택의 흐름(traceback)을 확인할 수 없음.
  • 디버깅 시간 증가
    • 단순 예외 메시지로는 원인을 추적하기 어려워, 코드 전반을 다시 분석해야 할 가능성이 큼.
import logging

try:
    # 예외를 발생시키는 코드
    data = scraper.run()
except Exception as e:
    # 단순히 예외 메시지만 로깅
    logging.error(f"작업 처리 중 오류 발생: {e}")
    
2024-11-22 08:58:54 - ERROR - root - 작업 처리 중 오류 발생: unhashable type: 'slice'

상세 except Logging

  1. 추적 가능한 디버깅 정보
    • 예외가 발생한 파일 이름, 라인 번호, 호출 스택(traceback) 등 상세 정보를 포함.
    • 원인이 되는 코드 경로를 명확히 파악 가능.
  2. 디버깅 효율성 향상
    • 발생한 예외의 전체 흐름을 보여주므로 문제 해결 시간을 단축.
    • 호출 스택을 통해 문제의 근본 원인을 정확히 추적 가능.
import logging
import traceback

try:
    # 예외를 발생시키는 코드
    data = test.run()
except Exception as e:
    # 상세한 예외 정보 로깅
    logging.error(traceback.format_exc())

2024-11-22 09:03:16 Traceback (most recent call last):
2024-11-22 09:03:16   File "/usr/src/app/app/main.py", line 47, in process_tasks
2024-11-22 09:03:16     data = test.run()
2024-11-22 09:03:16   File "/usr/src/app/app/internal.py", line 287, in run
2024-11-22 09:03:16     test_data = self.internal_func()
2024-11-22 09:03:16   File "/usr/src/app/app/internal.py", line 170, in internal_func
2024-11-22 09:03:16     logging.info(f'test_logging: {test_data[:100]}')
2024-11-22 09:03:16 TypeError: unhashable type: 'slice'

단순 vs 상세 비교

구분 단순 상세
로깅 내용 예외 메세지만 기록 예외 메세지와 호출 스택 전체 기록
디버깅 정보 제공 부족 풍부
디버깅 시간 문제 원인 추적에 많은 시간 소요 호출 스택을 통해 문제 원인을 빠르게 추적 가능
코드 유지보수성 낮음 높음

 


 

traceback, Python Docs 3.11.10

 

traceback — 스택 트레이스백 인쇄와 조회 — Python 3.7.17 문서

traceback — 스택 트레이스백 인쇄와 조회 소스 코드: Lib/traceback.py 이 모듈은 파이썬 프로그램의 스택 트레이스를 추출, 포맷 및 인쇄하는 표준 인터페이스를 제공합니다. 스택 트레이스를 인쇄할

docs.python.org

 

728x90
반응형