본문으로 바로가기

logging

  • logging 모듈은 표준 라이브러리 모듈이다.

  • 이 모듈은 응용 프로그램과 라이브러리를 위한 유연한 이벤트 로깅 시스템을 구현하는 함수와 클래스를 정의한다.

 

 

예제 1

 

기본적으로 출력하는 예제입니다.

로깅 레벨에 따라 출력되는 것과 안되는 것을 구분할 수 있습니다.

import logging

if __name__ == '__main__':
    logging.debug('debug print')
    logging.info('info print')
    logging.warn('warning print')
    logging.error('error print')
    logging.critical('critical print')
WARNING:root:warning print
ERROR:root:error print
CRITICAL:root:critical print

 

 

예제 2

 

로거 객체를 생성해서 setLevel() 함수를 통해 레벨을 지정하고 핸들러는 콘솔출력 StreamHandler 를 추가해주었습니다.

 

로거 객체 생성 > 핸들러 객체 생성  > 로거 객체에 핸들러 추가

import logging

if __name__ == '__main__':
    logger = logging.getLogger('jvvp')
    logger.setLevel(logging.DEBUG)

    stream_handler = logging.StreamHandler()
    logger.addHandler(stream_handler)

    logger.debug('debug print')
    logger.info('info print')
    logger.warn('warn print')
    logger.error('error print')
    logger.critical('critical print')
debug print
info print
warn print
error print
critical print

 

 

예제 3

 

로그파일을 생성하는 FileHandler 를 사용해보겠습니다.

로거객체에 경로명을 인자로 주어서 생성한 FileHandler 객체를 addHandler() 함수를 통해 추가해주었습니다.

 

로거 객체 생성 > 출력 핸들러 객체 생성  > 로거 객체에 핸들러 추가

import logging

if __name__ == '__main__':
    logger = logging.getLogger("jvvp")
    logger.setLevel(logging.DEBUG)

    file_handler = logging.FileHandler('jvvp_file.log')
    logger.addHandler(file_handler)
    
    logger.debug('debug print')
    logger.info('info print')
    logger.warn('warn print')
    logger.error('error print')
    logger.critical('critical print')

 

 

여러 핸들러를 추가하는 것도 가능합니다.

import logging

if __name__ == '__main__':
    logger = logging.getLogger("jvvp")
    logger.setLevel(logging.INFO)

    stream_handler = logging.StreamHandler()
    file_handler = logging.FileHandler('jvvp_file.log')
    logger.addHandler(stream_handler)
    logger.addHandler(file_handler)
    
    logger.debug('debug print')
    logger.info('info print')
    logger.warn('warn print')
    logger.error('error print')
    logger.critical('critical print')
info print
warn print
error print
critical print

 

 

예제 4

 

출력 포맷을 지정하는 것을 알아보겠습니다.

정의한 포맷으로 생성한 Formatter 객체를 핸들러의 setFormatter() 함수를 통해 지정해줄 수있습니다.

 

로거 객체 생성 > 출력 핸들러 객체 생성  > 포맷 지정 > 로거 객체에 핸들러 추가

import logging

if __name__ == '__main__':
    logger = logging.getLogger("jvvp")
    logger.setLevel(logging.INFO)

    stream_handler = logging.StreamHandler()
    formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s', datefmt="%Y-%m-%d %H:%M:%S")
    stream_handler.setFormatter(formatter)
    logger.addHandler(stream_handler)

    logger.debug('debug print')
    logger.info('info print')
    logger.warn('warn print')
    logger.error('error print')
    logger.critical('critical print')
2020-08-14 20:08:07 - jvvp - INFO - info print
2020-08-14 20:08:07 - jvvp - WARNING - warn print
2020-08-14 20:08:07 - jvvp - ERROR - error print
2020-08-14 20:08:07 - jvvp - CRITICAL - critical print

 

 

자세한 어트리뷰트 리스트는 다음과 같습니다.

 

https://docs.python.org/ko/3/library/logging.html

 

 

참고

 

logging — 파이썬 로깅 시설 — Python 3.8.5 문서

logging — 파이썬 로깅 시설 소스 코드: Lib/logging/__init__.py 이 모듈은 응용 프로그램과 라이브러리를 위한 유연한 이벤트 로깅 시스템을 구현하는 함수와 클래스를 정의합니다. 표준 라이브러리 ��

docs.python.org

 

파이썬 로깅의 모든것

파이썬 로깅의 모든것 파이썬 로깅에 대한 "모든것은" 사실 낚시구요. ㅎㅎ (유희열이 진행했던 All that music 이라는 라디오 프로그램에서 내가 좋아하는 국악이나 시부야계는 거의 나오지도 않��

hamait.tistory.com