我使用 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
},
}
我错过了什么吗?为什么旧的日志记录丢失了?
最佳答案
您不应同时从多个进程记录到基于文件的处理程序 - 这是不支持的,因为没有可移植操作系统支持它。
要从多个进程登录到单个目标,您可以使用以下方法之一:
- 使用像
ConcurrentLogHandler
这样的东西 - 使用
SysLogHandler
(或 Windows 上的NTEventLogHandler
) - 使用
SocketHandler
将日志发送到单独的进程以写入文件 - 将
QueueHandler
与multiprocessing.Queue
一起使用,如here 所述.
关于python - TimedRotatingFileHandler 在具有多实例的 Django 中不能正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18840785/