Twisted 启动/停止工厂/协议减少噪声日志消息

7 投票
3 回答
3628 浏览
提问于 2025-04-16 12:17

有没有办法让twistd不记录所有工厂和协议的启动和停止信息?我使用了很多种协议,并且进行很多连接……所以我的日志文件变得非常大。我在寻找一个简单的方法来关闭这些消息。

谢谢

3 个回答

0

其他的回答都很不错,但你也可以仅在日志记录的层面上做到这一点:

import logging
logging.getLogger('twisted').setLevel(logging.CRITICAL)
0

作为一个更全面的解决方案,你可以尝试以下方法:

from twisted.internet.protocol import Factory

Factory.noisy = False
3

你可以把一个工厂的 noisy 属性设置为 False,这样就可以阻止它记录这些消息了。你也可以查看这个链接 http://twistedmatrix.com/trac/ticket/4021,这个问题可能会在下一个 Twisted 版本中解决。

举个例子,这里有一个包含两个客户端的程序,但只有一个客户端会记录它的开始和停止消息:

import sys

from twisted.internet import reactor, protocol
from twisted.python import log

log.startLogging(sys.stdout)

f = protocol.ClientFactory()
f.protocol = protocol.Protocol
reactor.connectTCP('localhost', 22, f)

g = protocol.ClientFactory()
g.noisy = False
g.protocol = protocol.Protocol
reactor.connectTCP('localhost', 25, g)

reactor.run()

然后输出结果是:

2011-02-22 09:43:23-0500 [-] Log opened.
2011-02-22 09:43:23-0500 [-] Starting factory <twisted.internet.protocol.ClientFactory instance at 0x8f422cc>
^C
2011-02-22 09:43:26-0500 [-] Received SIGINT, shutting down.
2011-02-22 09:43:26-0500 [Protocol,client] Stopping factory <twisted.internet.protocol.ClientFactory instance at 0x8f422cc>
2011-02-22 09:43:26-0500 [-] Main loop terminated.

撰写回答