Django日志:无法按天创建日志

3 投票
1 回答
2590 浏览
提问于 2025-04-21 22:20

我想按天来整理我的日志,但是在新的一天到来时,它并不会自动创建一个新的文件。日志会继续存储在前一天的文件里,除非我重启服务器。我该怎么解决这个问题呢?

我使用的是Django 1.4。

提前谢谢你们!

LOGGING = {
'version': 1,
'disable_existing_loggers': True,
'filters': {
    'require_debug_false': {
        '()': 'django.utils.log.RequireDebugFalse'
    }
},
'formatters':{
    'verbose': {
        'format': '[%(asctime)s] %(levelname)s [%(name)s:%(lineno)s] %(message)s'
    },
    'simple': {
        'format': '[%(levelname)s] %(message)s'
    },
},
'handlers': {
    'file_django': {
        'class': 'logging.FileHandler',
        'filename': '/var/log/zboss/django/log_' + date.today().strftime('%Y%m%d') + '.log',
        'formatter': 'verbose',
        'level': 'DEBUG'
    },
    'file_modules': {
        'class': 'logging.FileHandler',
        'filename': '/var/log/zboss/log_' + date.today().strftime('%Y%m%d') + '.log',
        'formatter': 'verbose',
        'level': 'DEBUG'
    },
    'mail_admins': {
        'level': 'ERROR',
        'filters': ['require_debug_false'],
        'class': 'django.utils.log.AdminEmailHandler'
    },
},
'loggers': {
    'django': {
        'handlers': ['file_django'],
        'propagate': True,
        'level': 'DEBUG'
    },
    'django.request': {
        'handlers': ['mail_admins'],
        'level': 'ERROR',
        'propagate': True,
    },
    'core.views': {
        'handlers': ['file_modules'],
        'propagate': True,
        'level': 'DEBUG'
    },
},
}
暂无标签

1 个回答

10

不要在那个地方设置日期:它只会在导入时被计算一次。

相反,使用 logging.TimedRotatingFileHandler,这个工具会自动为你添加时间戳,像这样:

LOGGING = {
    # ...
    'handlers': {
        'file': {
            'level': 'INFO',
            'formatter': 'verbose',
            'filename': os.path.join(FOOBAR, 'foobar.log'),
            'class': 'logging.handlers.TimedRotatingFileHandler',
            'when': 'midnight',
            'interval': 1,
        },
    },
}

撰写回答