이 글에서는 Python의 내장 logging 모듈을 효과적으로 사용하여 디버깅 및 모니터링 능력을 향상시키는 방법을 자세히 살펴보겠습니다. 로깅을 이해하는 것은 견고하고 유지보수 가능한 애플리케이션을 구축하기 위해 중요합니다.
Why Logging Matter
우리가 파이썬 로깅의 구체적인 내용을 자세히 살펴보기 전에 왜 로깅이 중요한지 먼저 이해해 봅시다. 복잡한 파이썬 프로젝트를 작업할 때 특히 팀으로 작업할 때 로깅은 믿을 수 있는 도구가 됩니다. 로깅은 다음과 같은 데에 도움을 줍니다:
Debugging : 코드의 흐름을 쉽게 추적하고 오류와 문제를 식별
Monitoring : 프로덕션 환경에서 애플리케이션의 동작을 모니터링
Auditing : 애플리케이션 내에서 중요한 이벤트와 활동을 기록
Troubleshooting : 사용자 또는 시스템 관리자가 보고한 문제를 조사
이제 파이썬 로깅의 기본 개념을 살펴보겠습니다.
기본 로깅 개념
파이썬에서 logging 모듈은 애플리케이션에서 로그 메시지를 생성하는 유연한 프레임워크를 제공합니다. 먼저 몇 가지 기본 개념을 살펴보겠습니다:
Log Levels
파이썬은 각각 특정 목적을 가진 여러 로그 레벨을 제공합니다:
DEBUG : 디버깅 목적의 상세한 정보입니다.
INFO : 애플리케이션의 동작에 대한 일반 정보입니다.
WARNING : 예상치 못한 일이 발생했거나 잠재적인 문제를 나타냅니다.
ERROR : 애플리케이션의 작동을 방해하는 더 심각한 문제를 나타냅니다.
CRITICAL : 애플리케이션의 실패로 이어질 수 있는 심각한 오류를 나타냅니다.
다음은 로그 레벨을 사용하는 예입니다:
import logging
logging.basicConfig(level=logging.DEBUG)
logger = logging.getLogger("my_logger")
logger.debug("This is a debug message")
logger.info("This is an info message")
logger.warning("This is a warning message")
logger.error("This is an error message")
logger.critical("This is a critical message")
Log Handlers
로그 메시지는 어딘가로 전송되어야 합니다. 핸들러는 로그 메시지를 콘솔, 파일 또는 외부 서비스와 같은 다양한 출력으로 보내는 역할을 담당합니다. 파이썬은 StreamHandler 및 FileHandler와 같은 내장 핸들러를 제공합니다.
다음은 파일 핸들러를 구성하는 예입니다:
import logging
logging.basicConfig(level=logging.DEBUG, filename="app.log")
logger = logging.getLogger("my_logger")
file_handler = logging.FileHandler("app.log")
logger.addHandler(file_handler)
logger.info("This message will be logged to app.log")
Log Formatting
로그 메시지는 타임스탬프, 로그 레벨 및 기타 정보를 포함하여 사용자 정의될 수 있습니다. 이것은 로그 포맷터를 사용하여 수행됩니다. 기본 형식에는 로그 레벨과 메시지가 포함되어 있지만 필요에 맞게 사용자 정의 형식을 만들 수 있습니다.
import logging
logging.basicConfig(
level=logging.DEBUG,
format="%(asctime)s - %(name)s - %(levelname)s - %(message)s"
)
logger = logging.getLogger("my_logger")
logger.info("Custom log formatting example")
파이썬 로깅에 대한 기본 개념, 로그 레벨, 핸들러 및 포맷팅을 다뤘습니다.
'Programming > Python' 카테고리의 다른 글
[Python] 비동기 프로그래밍에서 asyncio.Event 사용하기 (0) | 2023.09.08 |
---|---|
[Python] 2개의 Dictionary 합치는 방법 (0) | 2023.09.07 |
Numba 설치하기 (0) | 2022.09.27 |
Python 알고리즘 Quick books (0) | 2022.08.03 |