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