Python에서 디버그 정보를 사용하여 오류 기록

Najwa Riyaz 2023년1월30일
  1. exception()메서드를 사용하여 Python에서 자세한 디버그 정보와 함께 오류를 기록합니다
  2. exception()메서드를stack_info와 함께 사용하여 Python 3.2+에서 자세한 디버그 정보와 함께 오류를 기록합니다
  3. exc_info와 함께 exception()메서드를 사용하여 Python 3.5 이상에서 자세한 디버그 정보와 함께 오류를 기록합니다
Python에서 디버그 정보를 사용하여 오류 기록

이 문서에서는 Python에서 자세한 디버그 정보와 함께 오류를 기록하는 방법을 설명합니다.

자세한 디버그 정보를 표시하려면 Python에서logging라이브러리를 가져오고logging.exception()메소드를 사용합니다. 오류 메시지와 스택 추적이 표시됩니다.

예외 문자열은 Python에서 발생한 정확한 오류를 이해하는 데 도움이 될 것입니다. 이 외에도 예외 및 예외를 생성 한 코드 줄에 대한 자세한 정보를 확인할 수 있습니다.

except코드 블록 내에서logging.exception()메서드를 호출합니다. 이는 오류 메시지와 함께 스택 추적을 표시하는 데 도움이됩니다. 이 로거에서ERROR수준으로 메시지를 기록합니다. 예외 정보는 로깅 메시지에 추가됩니다.

exception()메서드를 사용하여 Python에서 자세한 디버그 정보와 함께 오류를 기록합니다

다음은 Python에서 자세한 디버그 정보와 함께 오류를 기록하는 방법을 보여주는 예제입니다.

import logging


def fnc_divide(n):
    try:
        result = n / 0
        print("The result=", result)

    except:
        print("The except block")
        logging.exception("The detailed error message -")


fnc_divide(5)

출력:

The except block
ERROR:root:The detailed error message -
Traceback (most recent call last):
  File "C:/Users/../a.py", line 4, in fnc_divide
    result=n/0
ZeroDivisionError: division by zero

출력에는 아래 나열된 오류에 대한 자세한 정보가 표시됩니다.

  • 에러가 발생한 모듈 / 기능을 언급합니다. 이 예에서 출력은fnc_divide()메소드 내에서 오류가 발생했음을 표시합니다.
  • 오류가 발생한 줄 번호를 표시합니다. 이 예에서 출력은 4 번 줄에서 오류가 발생했음을 표시합니다.
  • 정확한 오류를 언급합니다. 이 예에서는ZeroDivisionError: division by zero입니다.

exception()메서드를stack_info와 함께 사용하여 Python 3.2+에서 자세한 디버그 정보와 함께 오류를 기록합니다

Python 3.2 이상에서는stack_info인수를True로 전달할 수 있습니다. 코드의 특정 지점에 도달 한 방법을 보여줍니다. 예외가 발생하지 않는 경우에도 마찬가지입니다.

stack_infoTrue이면 스택 정보가 로깅 메시지와 실제 로깅 호출에 추가되고 순서대로 스택 프레임과 연결됩니다. 순서는 스택의 맨 아래에서 현재 스레드의 로깅 호출까지입니다.

아래 예제 코드를보십시오.

import logging


def fnc_dividestack(n):
    try:
        result = n / 0
    except Exception:
        logging.exception("The detailed error message -", stack_info=True)


fnc_dividestack(4)

출력:

ERROR:root:The detailed error message -
Traceback (most recent call last):
  File "C:/Users/Ri..error.py", line 5, in fnc_dividestack
    result=n/0
ZeroDivisionError: division by zero
Stack (most recent call last):
  File "C:/Users/Ri..error.py", line 9, in <module>
    fnc_dividestack(4)
  File "C:/Users/Ri..error.py", line 7, in fnc_dividestack
    logging.exception("The detailed error message -", stack_info=True)

exc_info와 함께 exception()메서드를 사용하여 Python 3.5 이상에서 자세한 디버그 정보와 함께 오류를 기록합니다

Python 3.5 이상에서는exc_info인수에 예외 인스턴스를 전달할 수 있습니다. 이 매개 변수는 예외 인스턴스를 허용합니다.

exc_info튜플은 예외가 발생하는 경우 현재 예외 정보를 보유합니다. 그렇지 않으면None을 보유합니다. 다음은이 프로세스를 보여주는 예입니다.

import logging


def fnc_divide(n):
    try:
        result = n / 0
        print("The result=", result)

    except Exception as e:
        logging.exception("The exc_info - Zero Division error", exc_info=e)


fnc_divide(5)

출력:

ERROR:root:The exc_info - Zero Division error
Traceback (most recent call last):
  File "C:/Users/R..ror.py", line 4, in fnc_divide
    result=n/0
ZeroDivisionError: division by zero

관련 문장 - Python Logging