loguru exception 표시하기

loguru는 Python의 로깅 라이브러리로, 예외를 매우 간단하게 기록할 수 있는 기능을 제공합니다. 예외(exception)를 표시하고 자동으로 로그에 기록하는 기본적인 방법은 다음과 같습니다.


🔹 1. 설치

pip install loguru

🔹 2. 기본 사용법

예외를 자동으로 표시하고 로깅하기

from loguru import logger

@logger.catch
def main():
    # 일부러 예외를 발생시킴
    1 / 0

main()

설명:

  • @logger.catch: 데코레이터로 함수 전체를 감싸 예외 발생 시 자동으로 로그에 기록.

  • 콘솔에 스택 트레이스가 자동으로 출력되며, 로그 레벨은 ERROR.


🔹 3. 예외를 수동으로 기록하고 싶을 때

from loguru import logger

def do_something():
    try:
        x = 1 / 0
    except Exception as e:
        logger.exception("예외 발생!")

do_something()

설명:

  • logger.exception(...)try/except 블록 안에서 예외 정보를 전체 스택 트레이스와 함께 출력합니다.

  • 내부적으로 exc_info=True가 적용되어 있어, traceback을 자동 포함합니다.


🔹 4. 로그를 파일로 저장

logger.add("error.log", rotation="1 MB")  # 파일이 1MB 넘으면 새 파일 생성

@logger.catch
def main():
    1 / 0

main()

🔹 요약

방법 설명
@logger.catch 함수 전체에 적용하여 예외 자동 표시
logger.exception() try/except 내부에서 수동으로 예외 로깅
logger.add("file.log") 로그를 파일로 저장 가능
logger.catch() 인자 reraise, level, backtrace, diagnose 등의 옵션으로 세부 설정 가능

필요하다면 예외 발생 시 이메일 전송, 슬랙 알림 등도 연동 가능합니다. 원하시면 그 부분도 안내드릴 수 있어요.

자세한 로그를 catch문 안에서 출력하게 하고 싶어

예외 발생 시 자세한 로그를try/except 블록 안에서 출력하고 싶다면, loguru.logger.exception()을 사용하면 됩니다. 이 함수는 전체 스택 트레이스 , 예외 메시지 , 그리고 발생 지점 정보 를 포함한 상세한 로그 를 콘솔이나 파일에 출력합니다.


✅ Step-by-step: 자세한 로그를 출력하는 방법

1. 기본 구조

from loguru import logger

def my_function():
    try:
        # 예외 발생 코드
        result = 1 / 0
    except Exception as e:
        logger.exception("에러가 발생했습니다!")

my_function()

🔍 출력되는 로그 정보:

  • 에러 메시지

  • 예외의 종류 (ZeroDivisionError)

  • 예외 발생 위치 (파일명, 줄 번호)

  • 전체 스택 트레이스 (traceback)


🛠️ 2. 로그 파일에도 저장하고 싶다면

logger.add("debug.log", level="DEBUG", rotation="500 KB")

def my_function():
    try:
        1 / 0
    except Exception:
        logger.exception("자세한 예외 로그 기록 중...")

my_function()

🧠 3. 예외 없이도 로그 내용 디버그하고 싶다면?

logger.debug("디버그 메시지 출력")
logger.info("정보 메시지 출력")
logger.warning("경고 메시지 출력")
logger.error("에러 메시지 출력")

📌 추가 옵션: logger.opt()를 이용한 상세 출력

from loguru import logger

def my_function():
    try:
        [][2]
    except Exception:
        logger.opt(exception=True).error("문제 발생!")

my_function()
  • logger.opt(exception=True)logger.exception()과 동일하게 예외 트레이스를 표시하지만,
    다른 로그 레벨 (error, debug, info 등)과 결합할 수 있음.

✨ 요약

목적 사용 방법
try 블록 안에서 예외 로그 logger.exception("메시지")
로그를 파일에도 저장 logger.add("file.log")
레벨 조정하면서 예외 표시 logger.opt(exception=True).error("에러!")
데코레이터로 자동 캐치 @logger.catch

원하시면 logger.exception() 출력 예시도 보여드릴 수 있습니다. 혹시 로그 출력 포맷 커스터마이징도 원하시나요?

Categories:

Updated: