Django - 在日志文件名中包含年份和月份的干净方式

时间:2014-06-02 13:38:16

标签: python django apache logging

在我们的网络服务上,我们保留了几个我们想要命名为的日志:usage_YEAR_MONTH.log

这是我们在settings.py中设置的方式:

today = datetime.date.today()
log_suffix = "%04d_%02d" % (today.year, today.month)
LOG_DIR = "/path/to/log"

LOGGING = {
    # ...
    "loggers": {
        "usage" : {
            "handlers": ["usage"],
            "level": "INFO",
        },
    },
    "handlers" : {
        "usage" : {
            "level": "INFO",
            "class": "logging.FileHandler",
            "filename": "%s/usage_%s.log" % (LOG_DIR, log_suffix),
            "formatter": "simple",
        },
    },
    "formatters" : {
        "simple": {
            "format": "%(asctime)s %(message)s",
        },
    },
}

不幸的是,每个月的第一天,日志都会记录上个月的日志...最近一次或当我sudo service apache2 reload时。

我知道有一种可能性就是添加一个cron,在每个月的每个月初发布这个命令......但是干净的方法是什么呢? 另外......为每个请求设置此文件名的原因是什么? (我想这是优化问题)

1 个答案:

答案 0 :(得分:2)

正如我在评论中提到的,django在开始时评估设置,而不是在每次请求时评估。

要执行您要执行的操作,请查看logrotate linux命令。使用它可以很容易地配置你需要的东西。