Django 旋转日志文件数据丢失
Django rotated log files data is lost
我在 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 日志文件中看到 activity:
/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 不再使用应用程序 activity 进行更新。 UWSGI日志文件也是如此:
$ tail -f /var/log/uwsgi/mysite.log
在应用程序启动时保持沉默 运行。如果我重新启动 UWSGI,一切都会恢复正常,直到下一个午夜。
我怀疑这可能是 Django 日志记录的并发问题。我该如何克服呢?我该如何修复 UWSGI 日志?
对于 Django 日志,我通过将 TimedRotatingFileHandler 替换为 ConcurrentLogHandler.
解决了这个问题
我在 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 日志文件中看到 activity:
/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 不再使用应用程序 activity 进行更新。 UWSGI日志文件也是如此:
$ tail -f /var/log/uwsgi/mysite.log
在应用程序启动时保持沉默 运行。如果我重新启动 UWSGI,一切都会恢复正常,直到下一个午夜。
我怀疑这可能是 Django 日志记录的并发问题。我该如何克服呢?我该如何修复 UWSGI 日志?
对于 Django 日志,我通过将 TimedRotatingFileHandler 替换为 ConcurrentLogHandler.
解决了这个问题