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

logging.handler.TimedRotatingFileHandler在服务器上工作异常求助

Faust应用中TimedRotatingFileHandler日志分割异常问题排查与解决

问题根源分析

核心问题是TimedRotatingFileHandler的时区配置、初始化逻辑与服务器本地环境不匹配,导致日志分割时间、文件名、内容时间三者错位。

具体解决方案

1. 修正时区与分割时间配置

TimedRotatingFileHandler默认使用UTC时区,若服务器采用本地时区(如东八区),会导致日志分割时间比本地日期滞后,直接引发内容与文件名日期不符的问题:

  • 配置Handler时添加utc=False参数,强制使用服务器本地时区
  • 指定atTime=datetime.time(0,0,0),确保每天凌晨0点准时触发日志分割

2. 统一Logger初始化逻辑,避免重复配置

每个文件独立配置Logger容易引发Handler重复添加、Logger层级冲突,建议封装全局初始化函数:

import logging
from logging.handlers import TimedRotatingFileHandler
import os
from datetime import time

def get_file_logger(logger_name, log_folder):
    # 创建专属日志文件夹
    os.makedirs(log_folder, exist_ok=True)
    log_path = os.path.join(log_folder, f"{logger_name}.log")

    # 获取或复用Logger实例
    logger = logging.getLogger(logger_name)
    logger.setLevel(logging.INFO)

    # 避免重复添加Handler(关键)
    if logger.handlers:
        return logger

    # 配置按天分割的文件Handler
    file_handler = TimedRotatingFileHandler(
        log_path,
        when="D",
        interval=1,
        backupCount=30,
        utc=False,  # 使用本地时区
        atTime=time(0, 0, 0),  # 凌晨0点分割
        encoding="utf-8"
    )

    # 配置带精确时间的日志格式
    log_formatter = logging.Formatter(
        "%(asctime)s - %(name)s - %(levelname)s - %(message)s",
        datefmt="%Y-%m-%d %H:%M:%S"
    )
    file_handler.setFormatter(log_formatter)

    logger.addHandler(file_handler)
    return logger

业务文件中直接调用:

# rule_checking.py
logger = get_file_logger("rule_checking", "./logs/rule_checking")
# tracking_checking.py
logger = get_file_logger("tracking_checking", "./logs/tracking_checking")

3. 验证服务器时区与系统时间

登录服务器执行以下命令,确认时区和时间是否正确:

# 查看当前时区与时间状态
timedatectl
# 查看当前系统时间
date

若时区错误,可执行命令修改(以上海时区为例):

sudo timedatectl set-timezone Asia/Shanghai

4. 重启Faust进程

若进程长时间运行,Handler内部的时间计算可能出现偏差,重启服务让新的Logger配置生效。

额外注意事项

  • 确保Logger配置在Faust app启动前完成,避免在异步函数内初始化
  • 检查日志文件夹的读写权限,保证Faust进程有写入权限

内容的提问来源于stack exchange,提问作者Aylin Naebzadeh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 06:05:27