[Python] 19. 로그(logging)를 남기는 방법

파이썬에서 로그(logging)를 남기는 기능은 프로그램의 실행 상태를 기록하고 디버깅할 때 유용합니다. 로그를 남기면 코드 실행 중에 발생하는 중요한 정보, 경고, 오류 등을 기록하고 추적할 수 있습니다. 파이썬에서 로그를 남기는 기능은 logging 모듈을 사용하여 구현할 수 있습니다.

로그 설정

logging 모듈을 사용하기 전에 로그 설정을 구성합니다. 이 설정은 로그 메시지의 형식, 출력 위치, 로그 레벨 등을 지정합니다.

로그 설정은 logging.basicConfig() 함수를 사용하여 설정합니다. logging.basicConfig() 함수는 logging 모듈을 사용하여 로그를 남기기 위한 기본적인 설정을 수행하는 함수입니다. 이 함수를 사용하면 로거(Logger)를 생성하고 핸들러(Handler)를 설정하며, 로깅의 기본 동작을 변경할 수 있습니다.

import logging

# 로그 설정
logging.basicConfig(
    level=logging.INFO,        # 로그 레벨 (INFO 이상)
    format='%(asctime)s - %(levelname)s - %(message)s',  # 로그 출력 포맷
    datefmt='%Y-%m-%d %H:%M:%S'  # 날짜 포맷
)

로그 생성

로그 기록을 위해 로거(Logger) 객체를 생성합니다. 로거는 로그 레코드를 만들고 로그 처리기(Handler)에 전달합니다. 로거의 이름은 일반적으로 모듈 이름과 같게 설정합니다.

# 로거 생성
logger = logging.getLogger('my_logger')

로그 처리기 설정

로그 처리기는 로그 레코드를 출력하거나 파일에 기록하는 역할을 합니다. 여기서는 로그 레코드를 콘솔에 출력하는 로그 처리기를 설정하겠습니다.

# 로그 처리기 설정
console_handler = logging.StreamHandler()
logger.addHandler(console_handler)

로그 기록

logging 모듈은 다양한 로그 레벨을 지원합니다. 로그 레벨에 따라 출력되는 로그의 상세도가 달라집니다. 다음과 같은 로그 레벨을 사용할 수 있습니다.

  • DEBUG: 디버깅 정보를 남길 때 사용합니다. 가장 상세한 정보입니다.
  • INFO: 프로그램이 정상적으로 동작하는데 필요한 정보를 남길 때 사용합니다.
  • WARNING: 경고성 메시지를 남길 때 사용합니다. 주의해야 할 상황이지만 문제가 발생하지는 않을 때 사용합니다.
  • ERROR: 오류가 발생한 경우에 사용합니다. 프로그램의 일부 기능이 작동하지 않을 때 사용합니다.
  • CRITICAL: 심각한 오류가 발생하여 프로그램이 중단될 때 사용합니다.

이제 원하는 위치에서 로그 레코드를 생성하여 로깅을 수행합니다.

# 로그 기록
logger.info('This is an info message.')
logger.warning('This is a warning message.')
logger.error('This is an error message.')

출력 결과

2023-07-23 15:30:00 - INFO - This is an info message.
2023-07-23 15:30:00 - WARNING - This is a warning message.
2023-07-23 15:30:00 - ERROR - This is an error message.

위의 예제에서는 logging.basicConfig() 함수를 사용하여 로그 설정을 구성하고, logging.getLogger() 함수로 로거를 생성하고, logging.StreamHandler()를 사용하여 콘솔에 로그 레코드를 출력하는 로그 처리기를 설정했습니다. 이후 로그 메시지를 기록할 때, 로거 객체의 info(), warning(), error() 메서드를 사용하여 로그 레코드를 생성했습니다.

로그(logging) 기능은 로깅 레벨에 따라 중요도를 구분하고 로그 레벨 설정에 따라 특정 레벨 이상의 메시지만 기록되도록 할 수 있습니다. 이를 통해 프로그램의 실행 상태를 보다 효율적으로 관리하고 디버깅할 수 있습니다.

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

위로 스크롤