【问题标题】:Django rotated log files data is lostDjango 旋转日志文件数据丢失
【发布时间】:2015-12-30 00:33:29
【问题描述】:

我在 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 不再随应用活动更新。 UWSGI 日志文件也是如此:

$ tail -f /var/log/uwsgi/mysite.log

在应用程序启动并运行时保持静默。如果我重新启动 UWSGI,一切都会恢复正常,直到下一个午夜。

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

【问题讨论】:

    标签: django logging uwsgi


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-03
      • 2014-04-29
      • 1970-01-01
      • 2013-12-07
      • 2011-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多