Python의 내장 로깅 모듈 대신 Loguru 사용 이유
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
개발 툴
대상자
Python 개발자 (기초~중급 수준)
핵심 요약
- Loguru는 Python 내장 로깅 모듈보다 커스터마이징이 용이하며, TRACE, SUCCESS 등 추가 로그 레벨 지원
- color coding 및 JSON 포맷 지원으로 로그 가독성 향상
- 로그 파일 회전(rotation), 압축(compression), 보관 정책(retention) 자동화 기능 제공
logger.add()
함수로 로그 포맷, 레벨, 출력 경로 설정 가능
섹션별 세부 요약
1. 로깅 모듈의 한계 및 Loguru 도입
- Python 내장
logging
모듈의 커스터마이징 한계와 색상 지정 불가 문제 언급 - Loguru 도입으로 로그 출력의 직관성과 유연성 향상
pip install loguru
명령어로 설치 가능
2. 로그 레벨 및 우선순위
- TRACE(5), SUCCESS(25) 등 2개 추가 레벨 제공
- 레벨 우선순위 표:
TRACE(5) < DEBUG(10) < INFO(20) < SUCCESS(25) < WARNING(30) < ERROR(40) < CRITICAL(50)
3. 로그 포맷 및 커스터마이징
logger.add()
함수로 시간 형식, 색상, 출력 경로 설정 가능
```python
logger.add(sys.stdout, format="{time}::{level} --- {message}", level="INFO")
```
- HTML-like syntax로 로그 메시지 색상 지정 가능
```python
format="
```
4. 로그 파일 관리 기능
- 로그 파일 회전(rotation): 파일 크기(500MB) 또는 시간(12:00, 1주일) 기준 자동 생성
- 보관 정책(retention): 10일 이후 자동 정리
- 압축(compression): ZIP 형식으로 저장 가능
```python
logger.add("log_rotate.log", rotation="500 MB")
logger.add("log_retention.log", retention="10 days")
logger.add("log_retention2.log", compression="zip")
```
5. JSON 형식 및 컨텍스트 추가
serialize=True
옵션으로 JSON 포맷 로그 생성bind()
메서드로 추가 정보(author, type 등) 로그에 포함 가능
```python
context_logger = logger.bind(author="Akhilesh", type="demo")
context_logger.info("You can pass context with logs!")
```
6. 예외 처리 및 디버깅
backtrace=True
,diagnose=True
옵션으로 스택 트레이스 및 변수 값 포함logger.catch()
데코레이터로 예외 처리 자동화
```python
@logger.catch()
def func(a, b):
return a / b
```
결론
- Loguru는 간단한 설정으로 로그 가독성, 커스터마이징, 파일 관리 기능을 극대화할 수 있어 Python 개발자에게 강력 추천
logger.add()
함수를 통해 로그 레벨, 형식, 출력 경로를 1줄로 설정 가능- TRACE, SUCCESS 등 추가 레벨과 JSON/색상 포맷을 활용해 로그 기반 디버깅 및 모니터링 효율성 향상