【问题标题】:TimedRotatingFileHandler doesn't work fine in Django with multi-instanceTimedRotatingFileHandler 在具有多实例的 Django 中无法正常工作
【发布时间】:2013-09-21 08:33:31
【问题描述】:

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

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

【问题讨论】:

    标签: python django logging


    【解决方案1】:

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

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

    • 使用类似ConcurrentLogHandler
    • 使用SysLogHandler(或Windows 上的NTEventLogHandler
    • 使用SocketHandler 将日志发送到单独的进程以写入文件
    • 使用QueueHandlermultiprocessing.Queue,如here 所述。

    【讨论】:

    • 是否有定时轮换并发日志处理程序?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-02
    • 2016-01-01
    相关资源
    最近更新 更多