registros de registro de Python

import logging
import os
import sys
from logging.handlers import TimedRotatingFileHandler


def set_logger(name:str,log_dir:str,log_filename:str):
    '''

    :param name: logger名字
    :param log_dir: 保存日志的路径
    :return:
    '''

    if os.path.exists(log_dir):
        pass
    else:
        os.makedirs(log_dir)

    # 1. 创建日志对象
    logger = logging.getLogger(name=name)
    # 2. 设置日志基础级别
    logger.setLevel(logging.INFO)

    # 3. 创建日志 handler,handler控制到底输出到控制台还是文件,几个文件,文件保存时间,最多几个文件,文件内最多保存多少个字符串等
    console_handler = logging.StreamHandler(sys.stdout)  # 控制台输出handler
    file_handler = TimedRotatingFileHandler(filename=log_dir+'/'+log_filename,when='D',interval=1,backupCount=7,encoding='utf-8')   # 文件handler
    '''
    描述:
    filename:日志文件名
    when:日志文件按什么维度切分。'S'-秒;'M'-分钟;'H'-小时;'D'-天;'W'-周
          这里需要注意,如果选择 D-天,那么这个不是严格意义上的'天',而是从你
          项目启动开始,过了24小时,才会从新创建一个新的日志文件,
          如果项目重启,这个时间就会重置。所以这里选择'MIDNIGHT'-是指过了午夜
          12点,就会创建新的日志。
    interval:是指等待多少个单位 when 的时间后,Logger会自动重建文件。
    backupCount:是保留日志个数。默认的0是不会自动删除掉日志。
    '''

    # 4. 设置日志文件内的格式
    formatter = '[%(asctime)s]: %(name)s %(filename)s[line:%(lineno)s] %(levelname)s%(message)s'
    log_formatter = logging.Formatter(formatter)

    console_handler.setFormatter(log_formatter)
    file_handler.setFormatter(log_formatter)

    '''
    可以单独为某个handler设置级别,例如:
    file_handler.setLevel(logging.DEBUG)
    '''

    # 5. 在logger对象中添加handler
    logger.addHandler(console_handler)
    logger.addHandler(file_handler)

    return logger

logger = set_logger(name='log_util',log_dir='./log',log_filename='test_logfunction.log')
logger.info("   testlogging")

referencia:

Serie de tutoriales prácticos de Python - Módulo de registro de registro - Zhihu (zhihu.com)

(192 mensajes) logging.handlers.TimedRotatingFileHandler de Python

Supongo que te gusta

Origin blog.csdn.net/m0_52948781/article/details/129286008
Recomendado
Clasificación