Витая: как заставить замолчать определенные сообщения журнала? - PullRequest
4 голосов
/ 08 сентября 2011

У меня в приложении есть методы XML-RPC, которые генерируют много таких сообщений журнала Twisted, которые, в свою очередь, регистрируются через модуль Python logging:

2011-09-08 18:00:51.399553 UTC INFO XXX.XXX.XXX.XXX - - [08/Sep/2011:18:00:50 +0000] "POST /RPC2 HTTP/1.0" 200 129 "-" "xmlrpclib.py/1.0.1 (by www.pythonware.com)"

Эти сообщения журнала мне не нужны, и я хотел бы либо изменить их на уровень logging.DEBUG, либо полностью их подавить. Это поддерживается?

EDIT : Это сообщения журнала на стороне сервера, которые регистрируются, когда я вызываю методы объектов twisted.web.xmlrpc.XMLRPC. Эти объекты используются в иерархии (как в putChild) под объектами twisted.web.server.Site и twisted.web.vhost.NameVirtualHost, и я использую значение по умолчанию SelectReactor. Я предполагаю, что любой из этих классов или объект запроса мог бы быть тем, который фактически регистрирует их.

1 Ответ

4 голосов
/ 09 сентября 2011

twisted.web.xmlrpc.Proxy использует фабрику для настройки HTTP-соединения (обычным способом).Атрибут noisy фабрик Twisted обеспечивает контроль того, регистрируют ли они сообщения запуска и остановки.Вы можете изменить атрибут noisy фабрики Proxy следующим образом:

from sys import stdout

from twisted.web.xmlrpc import Proxy
from twisted.internet import reactor
from twisted.python.log import startLogging

startLogging(stdout)

p = Proxy('http://localhost:8080/RPC2')
class QuietQueryFactory(p.queryFactory):
    noisy = False

p.queryFactory = QuietQueryFactory
p.callRemote('echo', 'foo')

reactor.run()

Сравнить с выводом программы, когда noisy установлен на True.

Для сервера XML-RPC сообщения журнала поступают от twisted.web.server.Site, на котором размещен ресурс XML-RPC.Инициализатор Site принимает аргумент logPath;если вы передадите путь для этого параметра, то журналы запросов будут записываться в этот путь, а не в основной журнал.Вы также можете переопределить метод Site.log, который генерирует эти сообщения журнала, чтобы либо пропустить только те, которые вы хотите пропустить, либо ничего не делать, чтобы полностью отключить журнал запросов.

...