- TimedRotatingFileHandler是什么?
TimedRotatingFileHandler是Python logging模块中的一个子类,用于按照一定时间间隔自动切割日志文件。
- TimedRotatingFileHandler的使用方法
TimedRotatingFileHandler可以很方便地创建一个按照时间自动切割的日志文件。使用方法如下:
import logging
from logging.handlers import TimedRotatingFileHandler
logging.basicConfig(level=logging.DEBUG)
# 实例化TimedRotatingFileHandler,并设置切割方式
# 以小时为单位进行切割,保留3个备份文件,文件名为test.log
handler = TimedRotatingFileHandler("test.log", when="H", interval=1, backupCount=3)
handler.suffix = "%Y-%m-%d_%H-%M-%S.log" # 设置备份文件的后缀格式
# 将handler添加到logger中
logger = logging.getLogger()
logger.addHandler(handler)
# 写入日志信息
logger.debug("debug log")
logger.info("info log")
logger.warning("warning log")
logger.error("error log")
logger.critical("critical log")
- 参数说明
当初始化TimedRotatingFileHandler对象时,需要指定几个参数:
- filename:日志文件的绝对路径或相对路径;
- when:时间间隔单位。可选的值有“S”(秒)、“M”(分钟)、“H”(小时)、“D”(天)、“W0”到“W6”(星期一到星期日);
- interval:时间间隔数量。例如,如果when=“H”,interval=2,则表示每2小时进行一次切割;
- backupCount:保留备份文件的数量;
-
encoding:日志文件的编码方式,默认为“utf-8”。
-
备份文件后缀设置
默认情况下,TimedRotatingFileHandler会将备份文件命名为“原文件名.log.1”、“原文件名.log.2”等,其中“1”、“2”等表示备份文件的序号。如果要设置备份文件的后缀格式,可以设置suffix属性,例如:
handler.suffix = "%Y-%m-%d_%H-%M-%S.log" # 设置备份文件的后缀格式
suffix的值可以是任意合法的时间格式字符串,例如“%Y%m%d%H%M%S”表示“年月日时分秒”格式的字符串。
- 示例说明
以下示例演示了如何按天切割日志文件并设置备份文件后缀:
import logging
from logging.handlers import TimedRotatingFileHandler
logging.basicConfig(level=logging.DEBUG)
# 实例化TimedRotatingFileHandler,并设置切割方式
# 以天为单位进行切割,保留7个备份文件,文件名为test.log
handler = TimedRotatingFileHandler("test.log", when="D", interval=1, backupCount=7)
handler.suffix = "%Y-%m-%d.log" # 设置备份文件的后缀格式
# 将handler添加到logger中
logger = logging.getLogger()
logger.addHandler(handler)
# 写入日志信息
logger.debug("debug log")
logger.info("info log")
logger.warning("warning log")
logger.error("error log")
logger.critical("critical log")
在上述示例中,TimedRotatingFileHandler的when参数设置为“D”,表示以天为单位进行切割。handler.suffix设置为“%Y-%m-%d.log”,表示备份文件的后缀格式为“年-月-日.log”。
下面是另一个示例,演示了如何按小时切割日志文件并保留4个备份文件:
import logging
from logging.handlers import TimedRotatingFileHandler
logging.basicConfig(level=logging.DEBUG)
# 实例化TimedRotatingFileHandler,并设置切割方式
# 以小时为单位进行切割,保留4个备份文件,文件名为test.log
handler = TimedRotatingFileHandler("test.log", when="H", interval=1, backupCount=4)
handler.suffix = "%Y-%m-%d_%H.log" # 设置备份文件的后缀格式
# 将handler添加到logger中
logger = logging.getLogger()
logger.addHandler(handler)
# 写入日志信息
logger.debug("debug log")
logger.info("info log")
logger.warning("warning log")
logger.error("error log")
logger.critical("critical log")
在上述示例中,TimedRotatingFileHandler的when参数设置为“H”,表示以小时为单位进行切割。handler.suffix设置为“%Y-%m-%d_%H.log”,表示备份文件的后缀格式为“年-月-日_小时.log”。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python通过TimedRotatingFileHandler按时间切割日志 - Python技术站