보통 로그 관리는 ELK Stack + log 라이브러리 체제로 간다!
오늘은 근본이라 할 수 있는 이 Python의 logging 라이브러리에 대해 알아보자
import logging
logging.basicConfig(filename="app.log",
level=logging.DEBUG, # 로그 레벨 설정
format="%(asctime)s - %(levelname)s - %(message)s") # 로그 포맷 설정
logging.debug("디버깅 메시지")
logging.info("정보 메시지")
logging.warning("경고 메시지")
logging.error("에러 메시지")
logging.critical("심각한 오류 메시지")
logging.info("파일에 기록되는 로그 메시지")
실행을 하면 현재 디렉터리에 app.log 파일이 생성된다
ㅁ로그 레벨(Log Level)
Python의 logging 라이브러리는 다섯 가지 기본 로그 레벨을 제공한다
[로그 포맷 설정]
로거(Logger) 사용 - 고급
여러 개의 모듈을 사용할 때 개별적인 로거(Logger) 객체를 생성하여 사용하면 관리가 더 쉬워진다
import logging
# 로거 생성
logger = logging.getLogger("my_logger")
logger.setLevel(logging.DEBUG)
# 핸들러 (콘솔 출력)
console_handler = logging.StreamHandler()
console_handler.setLevel(logging.WARNING)
# 핸들러 (파일 저장)
file_handler = logging.FileHandler("my_log.log")
file_handler.setLevel(logging.DEBUG)
# 포맷 지정
formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")
console_handler.setFormatter(formatter)
file_handler.setFormatter(formatter)
# 로거에 핸들러 추가
logger.addHandler(console_handler)
logger.addHandler(file_handler)
# 로그 메시지 출력
logger.debug("디버깅 메시지") # 파일에만 기록됨
logger.info("정보 메시지") # 파일에만 기록됨
logger.warning("경고 메시지") # 콘솔 + 파일에 기록됨
logger.error("오류 메시지") # 콘솔 + 파일에 기록됨
logger.critical("치명적 오류") # 콘솔 + 파일에 기록됨
+ 예외 처리와 함께 사용!
오류 발생 시 exc_info=True를 사용하면 예외 정보도 함께 기록할 수 있다
import logging
logging.basicConfig(level=logging.ERROR)
try:
result = 10 / 0
except ZeroDivisionError:
logging.error("0으로 나누는 오류 발생!", exc_info=True)
<logging 정리>
logging은 파일 저장, 포맷 설정, 다중 핸들러를 지원하여 다양한 환경에서 활용 가능하다!
그리고 logging.getLogger()를 사용하면 여러 개의 로거를 개별적으로 관리가 가능하다
"logging을 잘 활용하면 디버깅과 운영 모니터링이 훨씬 편리해진다"
'Language > Python' 카테고리의 다른 글
[Python] 코드 린터 도구: Flake8, Pylint (1) | 2025.03.04 |
---|---|
[Python] requests 라이브러리 (0) | 2025.02.17 |