
Python 로그 라이브러리 비교: loguru가 logging보다 좋은 이유는?
파이썬(Python)으로 개발을 하다 보면, 프로그램의 실행 상태를 기록하거나 오류를 추적할 수 있도록 로그(logging)를 남기는 게 굉장히 중요합니다. 오류를 추적하거나 시스템 상태를 모니터링하려면 로그가 꼭 필요하죠.
파이썬에는 기본적으로 logging이라는 표준 라이브러리가 포함되어 있는데요.
최근에는 더 간단하고 강력한 기능을 제공하는 서드파티 라이브러리 loguru(로그루)를 사용하는 개발자들이 많아지고 있습니다.
그럼 두 라이브러리를 비교해보면서 어떤 상황에 어떤 라이브러리를 쓰는 게 더 좋은지 알아볼까요?
1. loguru(로그루)는 왜 편리할까?
loguru는 파이썬 커뮤니티에서 인기를 끌고 있는 서드파티 로그 라이브러리인데요.
복잡한 설정 없이도 강력한 기능을 제공하면서 logging을 대체할 수 있는 대안으로 주목받고 있습니다.
loguru의 장점
- 설정이 간단하다
복잡한 설정 파일이나 코드 없이도 몇 줄만으로 원하는 로그 설정이 끝납니다. - 체이닝(Chaining) 문법 지원
메서드를 이어 쓰는 방식으로 로그를 남길 수 있어서, 코드가 더 직관적이고 깔끔합니다. - 다중 출력 지원
로그를 파일과 콘솔에 동시에 출력하거나, 포맷을 자유롭게 설정할 수 있습니다. - 추가 기능이 풍부하다
자동 로그 압축, 파일 용량 초과 시 자동 분할, 보관 기간 설정 등 다양한 기능이 내장되어 있습니다.
loguru 기본 사용 예시
from loguru import logger
# 로그 파일 설정 (500MB 이상이면 자동 분할)
logger.add("app.log", rotation="500 MB")
# 로그 메시지 기록
logger.info("정보 메시지입니다.")
logger.warning("경고 메시지입니다.")
logger.error("에러 메시지입니다.")
보시는 것처럼, logger.add() 한 줄이면 파일 로그 설정이 끝납니다.
따로 핸들러(handler)를 설정할 필요도 없죠.
파일과 콘솔에 동시에 출력하기
파일과 콘솔에 로그를 동시에 출력하고 싶다면 아래처럼 설정하면 됩니다:
from loguru import logger
import sys
# 파일과 콘솔에 로그 출력 설정
logger.add("app.log", rotation="500 MB", retention="10 days")
logger.add(sys.stdout, level="INFO")
# 로그 메시지 기록
logger.info("정보 메시지입니다.")
logger.warning("경고 메시지입니다.")
logger.error("에러 메시지입니다.")
sys.stdout을 추가하면 콘솔 출력도 자동으로 설정되기 때문에, 불필요한 설정 없이 바로 사용할 수 있습니다.
2. Python 기본 logging의 장단점은?
logging은 파이썬에 기본으로 포함된 표준 라이브러리인데요.
별도의 설치 없이 쓸 수 있고, 다양한 환경과 호환된다는 장점이 있습니다.
장점
- 표준 라이브러리
설치 없이 바로 쓸 수 있고, 운영체제나 플랫폼에 관계없이 동작합니다. - 높은 커스터마이징 가능성
로그 포맷, 레벨, 출력 대상 등을 상세하게 설정할 수 있어서 복잡한 시스템에 적합합니다. - 호환성
많은 서드파티 라이브러리들이logging을 기반으로 로그를 남기기 때문에 통합 관리가 편합니다.
단점
- 설정이 복잡하다
단순한 기능이라도 설정이 길고 직관적이지 않아서, 처음 쓰는 사람은 헷갈리기 쉽습니다. - 체이닝 문법 미지원
메서드 체이닝을 지원하지 않아 코드가 장황해질 수 있습니다.
logging 기본 사용 예시
import logging
# 로그 설정
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(levelname)s - %(message)s',
filename='app.log',
filemode='a'
)
# 로그 메시지 기록
logging.info("정보 메시지입니다.")
logging.warning("경고 메시지입니다.")
logging.error("에러 메시지입니다.")
이렇게 하면 로그는 파일에만 저장되고 콘솔에는 출력되지 않습니다.
콘솔에도 출력하려면 추가 설정이 필요합니다.
파일과 콘솔 동시 출력 설정
import logging
# Logger 객체 가져오기
logger = logging.getLogger()
logger.setLevel(logging.INFO)
# 파일 핸들러 설정
file_handler = logging.FileHandler('app.log')
file_handler.setFormatter(logging.Formatter('%(asctime)s - %(levelname)s - %(message)s'))
# 콘솔 핸들러 설정
console_handler = logging.StreamHandler()
console_handler.setFormatter(logging.Formatter('%(asctime)s - %(levelname)s - %(message)s'))
# 핸들러 등록
logger.addHandler(file_handler)
logger.addHandler(console_handler)
# 로그 메시지 기록
logger.info("정보 메시지입니다.")
logger.warning("경고 메시지입니다.")
logger.error("에러 메시지입니다.")
보시는 것처럼, 파일과 콘솔에 동시에 로그를 출력하려면 여러 핸들러를 설정하고 포맷까지 따로 지정해야 합니다.
단순한 기능을 위해 꽤 많은 코드가 필요하죠.
3. loguru vs logging 비교 정리
| 항목 | logging | loguru |
|---|---|---|
| 설정 복잡도 | 높음 (핸들러 설정 필요) | 낮음 (logger.add()만으로 가능) |
| 로그 파일 분할/보관 | 외부 모듈 필요 | 내장 기능으로 지원 |
| 파일 + 콘솔 동시 출력 | 복잡한 설정 필요 | 간단한 설정으로 가능 |
| 체이닝 문법 | 미지원 | 지원 |
| 사용 편의성 | 복잡한 시스템에 적합 | 빠른 개발에 적합 |
4. 언제 어떤 로그 라이브러리를 써야 할까?
- 간단한 프로젝트나 빠른 개발이 필요할 때
loguru가 더 적합합니다. 설정도 간단하고 가독성도 좋아서 프로토타입이나 소규모 프로젝트에 딱 맞습니다. - 복잡한 시스템이나 다중 모듈 프로젝트
logging이 더 나은 선택입니다. 세밀한 설정이 가능해서 큰 프로젝트에서 유연하게 로그를 관리할 수 있습니다. 특히 여러 외부 라이브러리를 함께 쓸 때 통합 관리가 수월합니다.
5. 마무리 정리
loguru와 logging은 각각 장단점이 뚜렷한데요.
빠르고 간편하게 로그를 남기고 싶다면 loguru가 훨씬 편리합니다.
반면, 대규모 프로젝트나 복잡한 설정이 필요한 경우엔 logging이 더 안정적인 선택이 될 수 있겠죠.
'Python' 카테고리의 다른 글
| 파이썬 함수형 프로그래밍 완전 정복: 핵심 원리부터 `map`, `filter`, `reduce` 활용법까지 깔끔 정리! (0) | 2025.04.27 |
|---|---|
| 파이썬(Python) 속도, 이게 최선? 꼭 알아야 할 성능 최적화 꿀팁 대방출! (2) | 2025.04.26 |
| Flask 완전 정복: 파이썬 웹 프레임워크의 모든 것 (1) | 2025.04.12 |
| 파이썬 데코레이터 활용법: 로깅부터 권한 검증까지 완벽 가이드 (0) | 2025.03.24 |
| 파이썬 비동기 함수 Mocking, 더 이상 어렵지 않아요! (0) | 2025.03.22 |