본문 바로가기

python logging

카테고리 없음 by 코나인 2023. 6. 10.
반응형

콘솔

기본 level이 warning이어서 info 로그는 표시가 안됩니다.

import logging

logging.info('info log console.')
logging.warning('warning log console.')

 

모든 로그 표시 설정

log level을 debug로 변경합니다.

logging.basicConfig(level=logging.DEBUG)

import logging

logging.basicConfig(level=logging.DEBUG)

logging.debug('debug log console.')
logging.info('info log console.')
logging.warning('warning log console.')
logging.error('error log console.')
logging.critical('critical log console.')

 

파일

basicConfig.filename 설정시 지정 파일에 로그 출력

import logging

logging.basicConfig(filename='./file_logging.log', level=logging.DEBUG)

logging.debug('debug log console.')
logging.info('info log console.')
logging.warning('warning log console.')
logging.error('error log console.')
logging.critical('critical log console.')

 

콘솔, 파일 동시 출력

1. logger instance 생성
2. stream, file 각각의 handler 생성
3. logger instance에 handler 연결
4. logger instance로 logging

import logging

logger = logging.getLogger(__name__)

handlerStream = logging.StreamHandler()
handlerFile = logging.FileHandler('./file_logging.log')

logger.addHandler(handlerStream)
logger.addHandler(handlerFile)

logger.debug('debug log console.')
logger.info('info log console.')
logger.warning('warning log console.')
logger.error('error log console.')
logger.critical('critical log console.')

 

로그 format

포멧 생성 후 헨들러에 포멧 연결

formatter = logging.Formatter('[%(asctime)s][%(levelname)s|%(filename)s:%(lineno)s] >> %(message)s')

handlerStream.setFormatter(formatter)
handlerFile.setFormatter(formatter)

 

로그 파일 분할

fileHandler에서 설정합니다.

maxBytes : 파일 사이즈

backupCount : 백업파일 수

import logging
from logging.handlers import QueueHandler

# file_logging.log파일에 최대 100MB를 10개까지 남김
fileMaxByte = 1024 * 1024 * 100
handlerFile = logging.handlers.RotatingFileHandler(
    './file_logging.log', 
    maxBytes=fileMaxByte, 
    backupCount=10)

 

References

https://inma.tistory.com/136

반응형

댓글