我正在将基于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传递给扭曲。现在可以了,但是我仍然想知道是否有更好的方法可以做到这一点。