【问题标题】:Twisted logging扭曲的日志记录
【发布时间】:2010-08-16 07:24:11
【问题描述】:

我有 3 个进程在我的 twisted reactor 下运行:Orbited、WSGI(运行 django)和 Twisted 本身。

我正在使用

log.startLogging(sys.stdout)

当所有日志都指向同一个地方时,泛滥太多了。

我的 WSGI 日志中的一行是这样的:

2010-08-16 02:21:12-0500 [-] 127.0.0.1 - - [16/Aug/2010:07:21:11 +0000] "GET /statics/js/monitor_rooms.js HTTP/1.1" 304 - "http://localhost:11111/chat/monitor_rooms" "Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.8) Gecko/20100723 Ubuntu/10.04 (lucid) Firefox/3.6.8"

时间基本上重复了两次。我想我应该使用自己的格式化程序,但不幸的是我在twisted 的文档中找不到它(那里没有任何日志记录)

  1. 处理来自 3 个来源的日志记录的最佳方法是什么?
  2. 我将什么 kwargs 传递给 twisted.log 中的哪个函数来设置我自己的格式化程序(startLogging 不包含答案)
  3. 有什么比我建议的更好的解决方案? (我在设置记录器方面没有经验。)

【问题讨论】:

    标签: python twisted


    【解决方案1】:

    您可以使用twisted.python.log.msgsystem 关键字参数来自定义消息。

    假设你有:

    log.msg("Service ready for eBusiness!", system="enterprise")
    

    你会得到这样的日志输出:

    2010-08-16 02:21:12-0500 [enterprise] Service ready for eBusiness!
    

    然后,您可以让每个服务将 system="wsgi/orbited/..." 添加到它们的 log.msglog.err 调用中。

    我在上次与 Twisted 合作时发现 this 正在挖掘源代码。

    【讨论】:

      【解决方案2】:

      呵呵。我正在考虑这个问题。我想出的是一个单独的 Twisted 应用程序,它记录它通过套接字接收到的消息。您可以将 Python 日志配置为发送到套接字,也可以将 Twisted 的日志配置为发送到 Python 日志。因此,您可以获得将日志消息发送到单个进程的所有内容(然后使用 Python 的日志记录将它们记录到磁盘)。

      我在http://www.acooke.org/cute/APythonLog0.html 有一些初步的概念验证代码

      缺少的主要内容是最好指出哪条消息来自哪个来源。不确定如何最好地添加它(一种方法是在三个不同的端口上运行服务,并为每个端口使用不同的前缀)。

      PS Orbited 的工作情况如何?接下来就是我的清单了……

      【讨论】:

        猜你喜欢
        • 2011-06-19
        • 2011-11-03
        • 2014-12-25
        • 1970-01-01
        • 1970-01-01
        • 2019-12-30
        • 2012-11-24
        • 2011-04-11
        • 1970-01-01
        相关资源
        最近更新 更多