TimedRotatingFileHandler在具有多实例的Django中无法正常工作

发布于 2021-01-29 18:04:40

我每天都使用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
被浏览
47
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    您不应该同时从多个进程登录到基于文件的处理程序-不支持,因为它没有可移植的OS支持。

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

    • 使用类似 ConcurrentLogHandler
    • 使用SysLogHandler(或NTEventLogHandler在Windows上)
    • 使用SocketHandler可以将日志发送到单独的进程以写入文件
    • 使用QueueHandlermultiprocessing.Queue,所概述这里


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看