我使用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
},
}
我错过了什么吗?为什么旧的日志丢失?
答案 0 :(得分:12)
您不应该同时从多个进程登录到基于文件的处理程序 - 这是不受支持的,因为它没有可移植的操作系统支持。
要从多个进程登录到单个目标,可以使用以下方法之一:
ConcurrentLogHandler
SysLogHandler
(或Windows上的NTEventLogHandler
)SocketHandler
将日志发送到单独的进程以写入文件QueueHandler
与multiprocessing.Queue
一起使用,如here所述。