使用扭曲的多个日志观察器

时间:2018-09-26 12:29:50

标签: python logging twisted twistd

我正在将基于Twisted的服务器重构为Twisted插件。 我需要将日志记录以多种格式写入多个目标。 在我服务器的初始化代码中,globalLogBeginner可以解决这个问题:

observers = [jsonFileLogObserver(open("serverlog.json", "a")),
             textFileLogObserver(sys.stdout)]
globalLogBeginner.beginLoggingTo(observers)

已经弄清楚如何使用--twisted的--logger选项输出到JSON文件,但是它仅适用于单个目标。如何为Twisted设置多个日志观察器?

编辑: 解决方法是创建我自己的类以实现ILogObserver:

@implementer(ILogObserver)
class MultiLogger:

    def __init__(self, loggers):
        self.loggers = loggers

    def __call__(self, event):
        for logger in self.loggers:
            logger.__call__(event)

def multilogger():
   return MultiLogger(
       jsonFileLogObserver(open(SERVERLOG, "a")),
       textFileLogObserver(stdout))

然后我将--logger = mymodule.multilogger传递给扭曲。现在可以了,但是我仍然想知道是否有更好的方法可以做到这一点。

0 个答案:

没有答案