본문 바로가기

Programming/Python

[Python] 효과적인 디버깅, 모니터링이 가능한 Python Logging

이 글에서는 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")

 

파이썬 로깅에 대한 기본 개념, 로그 레벨, 핸들러 및 포맷팅을 다뤘습니다. 

반응형
LIST