TimedRotatingFileHandler在具有多实例的Django中无法正常工作
我每天都使用TimedRotatingFileHandler记录Django日志并轮换使用,但是检查日志文件,奇怪的问题是昨天的日志被截断了,今天的日志很少,昨天的日志丢失了!
Django 1.4
uwsgi 1.4.9
Python 2.6
我从uwsgi开始8个django实例。setting.py是
'handlers': {
'apilog': {
'level': 'INFO',
'class': 'logging.handlers.TimedRotatingFileHandler',
'filename': os.path.join(APILOG, "apilog.log" ),
'when': 'midnight',
'formatter': 'info',
'interval': 1,
'backupCount': 0,
},
},
'loggers': {
'apilog': {
'handlers': ['apilog'],
'level': 'INFO',
'propagate': True
},
}
我错过了什么?为什么旧的日志丢失了?
-
您不应该同时从多个进程登录到基于文件的处理程序-不支持,因为它没有可移植的OS支持。
要从多个进程登录到单个目标,可以使用以下方法之一:
- 使用类似
ConcurrentLogHandler
- 使用
SysLogHandler
(或NTEventLogHandler
在Windows上) - 使用
SocketHandler
可以将日志发送到单独的进程以写入文件 - 使用
QueueHandler
带multiprocessing.Queue
,所概述这里。
- 使用类似