Loguru 예외 표시하기
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() 출력 예시도 보여드릴 수 있습니다. 혹시 로그 출력 포맷 커스터마이징도 원하시나요?