[84.程序调试与测试(4):日志的滚动更新] 零基础学python,简单粗暴



概述

  • 在实际开发中,我们通常会将不同业务的日志进行分类存储,并分别设置存储上限;
  • 我们动态剔除时间久远的日志,以保持有限的存储空间存储的都是最近期的日志;
  • logging模块提供了RotatingFileHandler类帮我们实现上述功能;
    import logging
    from logging.handlers import RotatingFileHandler

    # 获取全局日志对象并设置级别
    logger = logging.getLogger(__name__)
    logger.setLevel(level=logging.INFO)

    # 创建日志格式对象
    formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')

    # 定义一个RotatingFileHandler,最多备份3个日志文件,每个日志文件最大1K
    rHandler = RotatingFileHandler("./logs/log.txt", maxBytes=1 * 1024, backupCount=3)
    console = logging.StreamHandler()

    # 设置级别和格式
    rHandler.setLevel(logging.INFO)
    console.setLevel(logging.INFO)
    rHandler.setFormatter(formatter)
    console.setFormatter(formatter)

    # 添加日志处理器
    logger.addHandler(rHandler)
    logger.addHandler(console)

    # 模拟打印大量日志
    # 最近的4K日志内容将分别被保存在log.txt,log.txt.1,log.txt.2,log.txt.3中
    # 更早的内容将被近期的内容覆盖
    for i in range(10):
        logger.info("%d:Start print log" % (i))
        logger.debug("%d:Do something" % (i))
        logger.warning("%d:Something maybe fail." % (i))
        logger.info("%d:Finish" % (i))
        logger.error("%d:Error Occured!" % (i))
  • 在这个例子中,单个文件的最大存储空间为1K,最多有3个备份;
  • 即log.txt动态存储最新的1K日志内容,log.txt.1存储的是次新的1K内容,以此类推;
  • log.txt外加3个早期的备份文件,4个文件,日志总容量为4K;
  • 这4个文件,永远动态地保存着最新的4K日志内容;

版权声明:本文为博主原创文章,未经博主允许不得转载。https://my.csdn.net/pangzhaowen

猜你喜欢

转载自blog.csdn.net/pangzhaowen/article/details/80740378