언어/Python

[Python]간단한 파일 입출력, 로그찍기 (RotatingFileHandler)

개발자국S2 2022. 11. 16. 10:56
import logging
from logging.handlers import RotatingFileHandler

def log_initialize():
    logger = logging.getLogger()
    logger.setLevel(logging.INFO)
    formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
    stream_handler = logging.StreamHandler()
    stream_handler.setFormatter(formatter)
    logger.addHandler(stream_handler)

    # 로그 파일 일반 저장
    file_handler = logging.FileHandler('C:/project/result/LOGFILE.log')
    # 로그 파일 순환 저장 : 용량에 따라 로그 파일 분할
    file_handler = RotatingFileHandler('C:/project/result/Rotating.log', maxBytes=1048576, backupCount=5)
    file_handler.setFormatter(formatter)
    logger.addHandler(file_handler)

def create_newfile():
    logging.info('function started')
    readfile()
    logging.info('function ended')

def readfile():
    logging.info('read started')
    rfile = open('C:/project/emp_20221115.txt','r')
    logging.info('read ended')

    change_file(rfile)

def change_file(rfile):
    logging.info('change started')
    cfile = rfile.read().replace(',', '|')
    logging.info('change ended')

    save_file(cfile)

def save_file(cfile):
    logging.info('new file saved')
    f = open('C:/project/result/newfile.txt', 'w')
    f.write(cfile)
    f.close()
    logging.info('file saved')


# Press the green button in the gutter to run the script.
if __name__ == '__main__':
    log_initialize()
    create_newfile()

결과 (maxByte를 1, backupCount=2로 설정했을때)

해당 Byte를 넘으면 다시 처음파일로 돌아가서 저장하는 순환구조

반응형