You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让TimedRotatingFileHandler在每月第一天执行日志轮转?

如何让TimedRotatingFileHandler在每月第一天执行日志轮转?

我懂你的困扰——Python自带的TimedRotatingFileHandler最多只支持到每周级别的日志轮转(比如用W0表示周日到周一的时间节点切换),没法直接实现“每月第一天自动轮转日志”的需求。

我之前琢磨出一个思路:基于午夜轮转的基础配置,通过自定义namer函数来做条件式重命名——只有当当天是每月第一天时,才把前一天的日志文件重命名为带年月的归档格式;其他日子里,即使触发了午夜轮转,也让文件保持原名称(相当于不生成新的归档文件)。具体实现代码如下:

import datetime as dt
import logging
from logging.handlers import TimedRotatingFileHandler
    
logger = logging.getLogger("process")
handler = TimedRotatingFileHandler("process.log", when="midnight")
handler.namer = lambda _: (dt.datetime.now() - dt.timedelta(days=1)).strftime("%Y%m_process.log") if dt.datetime.now().day == 1 else "process.log"
logger.addHandler(handler)

备注:内容来源于stack exchange,提问作者not_real_moderator

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.13 18:38:16