python通过TimedRotatingFileHandler按时间切割日志

通过TimedRotatingFileHandler按时间切割日志

线上跑了一个定时脚本,每天生成的日志文件都写在了一个文件中。但是日志信息不可能输出到单一的一个文件中。

原因有二:1.日志文件越来越大会影响系统的性能。2.日志文件格式不够清晰,比如我想看今天的日志,不太方便找到的今天的日志信息(即使对日志输出做了时间提示)

通过设置 TimedRotatingFileHandler 进行日志按周(W)、天(D)、时(H)、分(M)、秒(S)切割。

先看一个简单例子:

import time
import logging
import os
from logging import handlers


def _logging(**kwargs):
    level = kwargs.pop('level', None)
    filename = kwargs.pop('filename', None)
    datefmt = kwargs.pop('datefmt', None)
    format = kwargs.pop('format', None)
    if level is None:
        level = logging.DEBUG
    if filename is None:
        filename = 'default.log'
    if datefmt is None:
        datefmt = '%Y-%m-%d %H:%M:%S'
    if format is None:
        format = '%(asctime)s [%(module)s] %(levelname)s [%(lineno)d] %(message)s'

    log = logging.getLo
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python中的TimedRotatingFileHandler是一个日志处理器,用于按时间日志文件进行循环切割。 循环切割意味着在固定的时间间隔内,会为每个时间段生成一个新的日志文件。 TimedRotatingFileHandler的主要参数是filename、when和interval。 - filename:要写入的日志文件的文件名。 - when:确定日志文件轮换的时间单位,可以是"midnight"(午夜)、"S"(秒)或"H"(小时)等。 - interval:时间间隔,表示多少个when单位后会进行日志文件切割。 示例代码如下: ```python import logging from logging.handlers import TimedRotatingFileHandler logger = logging.getLogger("example_logger") logger.setLevel(logging.DEBUG) # 创建TimedRotatingFileHandler对象 handler = TimedRotatingFileHandler("example.log", when="midnight", interval=1) handler.suffix = "%Y-%m-%d" # 日志文件名后缀格式化 # 设置日志格式 formatter = logging.Formatter("%(asctime)s - %(levelname)s - %(message)s") handler.setFormatter(formatter) # 将handler添加到logger logger.addHandler(handler) # 输出日志 logger.debug("Debug message") logger.info("Info message") logger.warning("Warning message") ``` 上述代码创建了一个logger对象,设置了日志级别为DEBUG。然后,创建了一个TimedRotatingFileHandler对象,设置切割文件名后缀的格式为年-月-日。接着,设置了日志的格式,并将handler对象添加到logger中。最后,通过logger输出了不同级别的日志信息。 当运行以上代码时,每天午夜(当when="midnight")到来时,会自动将日志写入一个新的文件,文件名的格式为example_2022-05-23.log、example_2022-05-24.log等。这样就实现了按时间循环切割日志文件的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值