2020-12-13:Python日志模块中RotatingFileHandler(循环覆盖式日志处理)类的使用

Python日志模块中RotatingFileHandler(循环覆盖式日志处理)类的使用

RotatingFileHandler 类位于 logging.handlers 模块,它支持磁盘日志文件的轮换。

class logging.handlers.RotatingFileHandler(filename, mode=‘a’, maxBytes=0, backupCount=0, encoding=None, delay=False, errors=None)

返回一个 RotatingFileHandler 类的新实例。 将打开指定的文件并将其用作日志记录流。 如果未指定 mode,则会使用 ‘a’。 如果 encoding 不为 None,则会将其用作打开文件的编码格式。 如果 delay 为真值,则文件打开会被推迟至第一次调用 emit()。 默认情况下,文件会无限增长。 如果提供了 errors,它会被用于确定编码格式错误的处理方式。

你可以使用 maxBytes 和 backupCount 值来允许文件以预定的大小执行 rollover。 当即将超出预定大小时,将关闭旧文件并打开一个新文件用于输出。 只要当前日志文件长度接近 maxBytes 就会发生轮换;但是如果 maxBytes 或 backupCount 两者之一的值为零,就不会发生轮换,因此你通常要设置 backupCount 至少为 1,而 maxBytes 不能为零。 当 backupCount 为非零值时,系统将通过为原文件名添加扩展名 ‘.1’, ‘.2’ 等来保存旧日志文件。 例如,当 backupCount 为 5 而基本文件名为 app.log 时,你将得到 app.log, app.log.1, app.log.2 直至 app.log.5。 当前被写入的文件总是 app.log。 当此文件写满时,它会被关闭并重户名为 app.log.1,而如果文件 app.log.1, app.log.2 等存在,则它们会被分别重命名为 app.log.2, app.log.3 等等。

子模块(函数)通过logger定义和主模块使用同一个日志模块

example
# myFun.py

# encoding:utf8
import logging
from logging.handlers import RotatingFileHandler

#
# logging模块
# 设置单个日志文件最大3M (3145728字节,*8=位数),最多同时存在200个,总计600M,超过则循环式覆盖
# 当前正在写入的日志名称为Log,其它已达到最大容量的日志名称为 Log.1 .2 .3。。。
#


def myfun():
    # 共享主模块日志配置   [通过设置getLogger中的logger 名称与主模块共用同一个logger]
    logger = logging.getLogger('weilinlin')
    print('========fun========')
    for i in range(50):
        logger.debug("测试日志fun %d", i)


if __name__ == "__main__":
    print('main')
    myfun(

你可能感兴趣的:(python,笔记,python,logging)