<aside>
</aside>
안녕하세요! loguru 완전 정복을 위한 마지막 여정에 오신 것을 환영합니다. 지금까지 우리는 loguru가 제공하는 7가지 기본 로그 레벨을 아주 유용하게 사용해왔습니다. 하지만 때로는 우리 애플리케이션만의 특별한 상황을 기록하고 싶을 때가 있죠. 예를 들어, '보안 감사'나 '성능 측정'처럼요! 🧐
이번 챕터에서는 loguru의 기본 레벨을 넘어, 우리 애플리케이션의 맥락에 꼭 맞는 **'커스텀 로그 레벨'**을 직접 만들어보는 방법을 배웁니다. logger.level() 함수를 사용하여 우리만의 레벨에 고유한 이름, 심각도, 색상, 그리고 아이콘까지 부여하여, 로그를 더욱 풍부하고 의미 있게 만들어 보겠습니다.
이번 챕터를 마치면 여러분은 다음을 할 수 있게 될 거예요!
logger.level() 메서드를 사용하여 새로운 로그 레벨을 정의할 수 있습니다.logger.log() 메서드를 사용하여 새롭게 만든 커스텀 레벨로 로그를 기록할 수 있습니다.이번 챕터부터는 loguru-mastery라는 새로운 프로젝트 폴더에서, 각 주제에 맞는 독립적인 실습을 진행합니다.
프로젝트 구조
loguru-mastery/
├── venv/
├── requirements.txt <- loguru만 포함
└── custom_levels.py <- 새로 추가된 파일!
custom_levels.py 전체 코드
# custom_levels.py
import sys
import time
from loguru import logger
# 1. 기본 핸들러 제거 후 커스텀 포맷 설정
# 로그 레벨 아이콘을 출력하기 위해 {level.icon}을 포맷에 추가합니다.
logger.remove()
log_format = (
"{time:HH:mm:ss} | {level.icon} {level: <8} | {name}:{function} - {message}"
)
logger.add(sys.stderr, format=log_format, colorize=True, level="INFO")
# 2. 나만의 로그 레벨 정의
# 'AUDIT' 레벨: 보안 감사 추적용. INFO(20)와 SUCCESS(25) 사이의 중요도.
logger.level("AUDIT", no=22, color="<bold><blue>", icon="🛡️")
# 'PERF' 레벨: 성능 측정용. INFO와 WARNING(30) 사이의 중요도.
logger.level("PERF", no=28, color="<magenta>", icon="⏱️")
# 3. 새로운 로그 레벨 사용하기
def user_login(username, password):
# logger.log() 메서드를 사용하여 커스텀 레벨로 로그를 기록합니다.
logger.log("AUDIT", f"사용자 '{username}' 로그인 시도...")
start_time = time.time()
# ... 가상의 복잡한 인증 로직 ...
time.sleep(0.15)
end_time = time.time()
duration = (end_time - start_time) * 1000
logger.log("PERF", f"인증 로직 수행 시간: {duration:.2f}ms")
if username == "admin" and password == "secret":
logger.success(f"사용자 '{username}' 로그인 성공!")
return True
else:
logger.warning(f"사용자 '{username}' 로그인 실패!")
return False
if __name__ == "__main__":
logger.info("--- 로그인 시뮬레이션 시작 ---")
user_login("user123", "wrong_password")
print("-" * 40)
user_login("admin", "secret")
logger.info("--- 로그인 시뮬레이션 종료 ---")
기본 7개 레벨(DEBUG, INFO 등)은 일반적인 상황을 기록하기에 충분하지만, 우리 서비스만의 특수한 도메인 이벤트를 기록하고 싶을 때 커스텀 레벨은 매우 유용합니다.