Ing*_*her 3 python logging twisted twistd
我的基于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运行这个客户端时,我永久地从Twisted类中获取日志消息,即从类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配置?
Twisted的伐木非常天真.但是,没有理由需要这样,因为twisted.python.log它非常有特色,并且能够进行您(和其他人)感兴趣的那种选择性报告.
日志事件只是任意键和值的字典.默认观察者知道带有'message'键的字典.也许正因为如此,Twisted本身发出的大多数日志消息都不会尝试做任何事情,除了提供与此键相关联的人类可读字符串(此外,许多发出的消息是在当前 Twisted日志系统之前添加的,所以有一个较老的,更原始的系统作为消费者).
不久前,这个问题困扰了那些被提示提交票证并开始解决问题的UDP部分的人.这个问题大多已经解决,但还有一些事情要做.
尝试的解决方案是记录结构化消息,该消息传达相同的信息但没有消息,因此默认观察者不记录.这样可以避免默认情况下出现在日志中的消息,但允许对这些事件特别感兴趣的观察者观察它们并根据需要处理它们.
这张票一直没有动过一段时间.有人可能很容易拿起补丁并获得完成的最后一点.
| 归档时间: | 
 | 
| 查看次数: | 1738 次 | 
| 最近记录: |