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

如何配置Django logger实现每24小时生成日期命名的独立日志文件

Django 按天切割日志配置调整方案

你需要将原配置中的普通FileHandler替换为Python logging模块内置的TimedRotatingFileHandler,该处理器原生支持按时间周期自动切割日志,调整后的完整配置如下:

import os
# 提前创建logs目录避免启动报错
LOGS_DIR = './logs'
if not os.path.exists(LOGS_DIR):
    os.makedirs(LOGS_DIR)

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        'simpleRe': {
            'format': '[{levelname}] [{asctime}] [{module}] {process:d} {thread:d} {message}',
            'style': '{',
        }
    },
    'handlers': {
        'to_file': {
            'level': 'DEBUG',
            # 替换为按时间切割的处理器
            'class': 'logging.handlers.TimedRotatingFileHandler',
            # 基础文件名,后续会自动拼接日期后缀
            'filename': os.path.join(LOGS_DIR, 'debug'),
            'formatter': 'simpleRe',
            # 切割单位:D代表天
            'when': 'D',
            # 切割间隔:每1天切割一次,对应24小时周期
            'interval': 1,
            # 历史日志保留天数,设为0则不限制保留数量
            'backupCount': 30,
            # 自定义文件名后缀,对应格式为_日月年.log,符合需求的debug_26102021.log格式
            'suffix': '_%d%m%Y.log',
            # 匹配自定义后缀的正则,保证旧日志自动清理功能正常
            'extMatch': r'^_\d{2}\d{2}\d{4}\.log$',
            # 避免日志写入中文出现乱码
            'encoding': 'utf-8'
        },
    },
    'loggers': {
        'django': {
            'handlers': ['to_file'],
            'level': 'DEBUG',
            'propagate': True,
        }
    },
}
关键参数说明
  • when:时间切割单位,可选值包括S(秒)、M(分钟)、H(小时)、D(天)、W0-W6(每周周几),这里配置为D即按天切割
  • interval:切割周期,和when配合使用,值为1代表每1个时间单位切割一次,对应需求的每24小时生成一个新日志文件
  • suffix:日志文件后缀模板,_%d%m%Y.log正好匹配你需要的debug_26102021.log命名格式
  • backupCount:历史日志保留上限,比如配置为30就会自动清理30天之前的旧日志,不需要限制可设为0
  • extMatch:匹配自定义日志后缀的正则表达式,用来识别历史日志文件,保证backupCount配置的自动清理旧日志功能正常生效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 16:54:06