Django旋转日志文件数据丢失

时间:2015-10-01 20:29:00

标签: django logging uwsgi

我在10个进程中使用UWSGI启动我的Django 1.8应用程序。 UWSGI是在virtualenv下建立的。

Django文件记录配置如下:

LOG_FILE_PATH = '/tmp/app_logs/debug.log'
...
    'handlers': {
    'console': {
        'level': 'DEBUG',
        'class': 'logging.StreamHandler',
        'formatter': 'simple'
    },
    'file': {
        'level': 'INFO',
        'class': 'logging.handlers.TimedRotatingFileHandler',
        'filename': LOG_FILE_PATH,
        'formatter': 'verbose',
        'when': 'midnight',
        'interval': 1,
        'backupCount': 0,
...

当我启动UWSGI日志工作正常时 - 我看到debug.log正在使用条目进行更新。我在UWSGI日志文件中看到了活动:

/var/log/uwsgi/mysite.log

午夜过后,我看到Django日志文件发生了旋转(确实创建了debug.log.2015-09-30),但它几乎是空的:

$ cat debug.log.2015-09-30
INFO 2015-10-01 17:45:21,362 MainScreen 1836 140697212401600 MainScreen is called with the following parameters: {}
ERROR 2015-10-01 17:45:21,362 MainScreen 1836 140697212401600 Login error: NotEnoughParametersError {}

此外,当前日志文件debug.log不再使用app活动进行更新。 UWSGI日志文件

$ tail -f /var/log/uwsgi/mysite.log
应用程序启动并运行时,

保持静音。如果我重新启动UWSGI,一切都会恢复正常,直到下一个午夜。

我怀疑这可能是Django日志记录的并发问题。我该如何克服这个问题?我如何修复UWSGI日志呢?

1 个答案:

答案 0 :(得分:0)

对于Django日志,我通过用ConcurrentLogHandler替换TimedRotatingFileHandler解决了这个问题。