728x90
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
자세한 어트리뷰트 리스트는 다음과 같습니다.
참고
'Language > Python' 카테고리의 다른 글
파이썬 반복형 객체로 순서쌍 만들기 : itertools (0) | 2020.08.15 |
---|---|
파이썬 단위테스트(unittest) 사용하기 -1 (0) | 2020.08.14 |
파이썬 엘라스틱서치(Elasticsearch) 연동 -3 : 노리(Nori) 형태소 분석기 설치 (0) | 2020.08.13 |
파이썬 쓰레드(Thread) 알아보기 - 4 : 쓰레드 동작 순서 제어를 위한 Event (0) | 2020.08.12 |
파이썬 쓰레드(Thread) 알아보기 - 3 : 데이터 통신 (0) | 2020.08.12 |