9

我使用 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  
     },
  }

我错过了什么?为什么旧的日志记录会丢失?

4

1 回答 1

15

您不应该同时从多个进程登录到基于文件的处理程序 - 这是不受支持的,因为它没有便携式操作系统支持。

要从多个进程登录到单个目标,您可以使用以下方法之一:

  • 使用类似的东西ConcurrentLogHandler
  • 使用SysLogHandler(或NTEventLogHandler在 Windows 上)
  • 使用SocketHandler将日志发送到单独的进程以写入文件
  • 使用 aQueueHandler和 a ,如此multiprocessing.Queue所述。
于 2013-09-17T07:14:46.803 回答