扭曲:如何使某些日志消息静音?

时间:2011-09-08 18:04:27

标签: python logging twisted

我的应用程序中有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或完全禁止它们。这支持了吗?

编辑:这些是服务器端日志消息,在我调用twisted.web.xmlrpc.XMLRPC个对象的方法时会被记录。这些对象在putChildtwisted.web.server.Site对象下面的层次结构中使用(如在twisted.web.vhost.NameVirtualHost中),我使用默认的SelectReactor。我想这些类或请求对象中的任何一个都可能是实际记录它们的那个。

1 个答案:

答案 0 :(得分:4)

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服务器,日志消息来自托管XML-RPC资源的twisted.web.server.SiteSite初始值设定项接受logPath参数;如果传入此参数的路径,则请求日志将写入该路径而不是主日志。您还可以覆盖发出这些日志消息的Site.log方法,省略您要省略的方法,或者不做任何事情来完全禁用请求日志。