Я в процессе рефакторинга моего сервера на основе Twisted в плагин twistd.Мне нужно, чтобы записи в журнале были записаны в нескольких форматах по нескольким адресатам.В коде инициализации моего сервера globalLogBeginner делает трюк:
observers = [jsonFileLogObserver(open("serverlog.json", "a")),
textFileLogObserver(sys.stdout)]
globalLogBeginner.beginLoggingTo(observers)
Уже разобрался, как использовать опцию --logger twistd для вывода в файл JSON, но он работает только для одной цели.Как настроить несколько наблюдателей журнала для Twistd?
Редактировать: В качестве временного решения я создал собственный класс, реализующий 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 в twistd.Теперь это работает, но я все еще хочу знать, есть ли лучший способ сделать это.