我的基於Twisted的客戶端在循環中發送UDP數據包。 因此我使用的是DatagramProtocol類。 這是源:扭曲:禁用扭曲框架類的日誌記錄
#!/usr/bin/python
# -*- coding: utf-8 -*-
from twisted.application.service import Service
from twisted.internet import reactor
from twisted.internet.task import LoopingCall
from twisted.internet.protocol import DatagramProtocol
from twisted.python import log
import logging
class HeartbeatClient(Service):
def __init__(self, host, port, data, beat_period):
self.ip = host
self.port = int(port)
self.data = data
self.beat = int(beat_period)
def startService(self):
self._call = LoopingCall(self._heartbeat)
self._call.start(self.beat)
def stopService(self):
self._call.stop()
def _heartbeat(self):
protocol = DatagramProtocol()
protocol.noisy = False
port = reactor.listenUDP(0, protocol)
port.write(self.data, (self.ip, self.port))
port.stopListening()
現在,當我運行這個客戶端twistd來,我永遠得到的扭曲類的日誌信息,即從類DatagramProtocol:
2011-09-11 18:39:25+0200 [-] (Port 55681 Closed)
2011-09-11 18:39:30+0200 [-] twisted.internet.protocol.DatagramProtocol starting on 44903
2011-09-11 18:39:30+0200 [-] (Port 44903 Closed)
2011-09-11 18:39:35+0200 [-] twisted.internet.protocol.DatagramProtocol starting on 50044
2011-09-11 18:39:35+0200 [-] (Port 50044 Closed)
2011-09-11 18:39:40+0200 [-] twisted.internet.protocol.DatagramProtocol starting on 37450
由於這些日誌消息污染我的「自己的」日誌,我不知道我是否可以禁用這些日誌消息。 正如你所看到的,我已經通過調用protocol.noisy = False
減少了日誌的數量,但我仍然收到其他日誌消息。同樣命令g = protocol.ClientFactory().noisy = False
沒有幫助。
是否有可能以所有模塊的通用方式禁用所有Twisted內部類的日誌記錄?也許通過使用一些Twisted-logging配置?
相關:http://stackoverflow.com/q/5078980 – jfs
謝謝。不幸的是,答案並不是解決這個問題的方法。即使當我將protocol設置爲false時(請參閱我對該問題的補充),我仍會收到Log消息。 – ifischer
日誌消息來自'twisted.internet.udp.Port'類,參見['._bindSocket()'](http://twistedmatrix.com/trac/browser/trunk/twisted/internet/udp.py#L99 )和['.connectionLost()'](http://twistedmatrix.com/trac/browser/trunk/twisted/internet/udp.py#L218)方法。它不提供禁用它的選項。 http://twistedmatrix.com/documents/current/core/howto/application.html#auto6 – jfs