gpt4 book ai didi

python - Twisted:禁用 Twisted 框架类的日志记录

转载 作者:太空宇宙 更新时间:2023-11-03 14:33:01 25 4
gpt4 key购买 nike

我的基于 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 日志记录配置?

最佳答案

Twisted 的日志记录非常幼稚。然而,没有理由必须是这种情况,因为 twisted.python.log 非常有特色,并且能够进行您(和其他人)感兴趣的那种选择性报告。

日志事件只是任意键和值的字典。默认观察者知道带有 'message' 键的字典。也许正因为如此,Twisted 本身发出的大多数日志消息除了提供与此键关联的人类可读字符串外,不会尝试做任何事情(此外,许多发出的消息是在当前 扭曲的日志系统,作为消费者的旧的、更原始的系统也是如此。

不久前,这个问题困扰着被提示提交 a ticket 的人并开始着手解决the UDP part of the problem尤其。该问题已基本解决,但还有一些事情需要完成。

尝试的解决方案是记录一个结构化消息,该消息传达相同的信息,但没有消息,因此默认观察者不记录。这避免了消息默认出现在日志中,但允许对这些事件特别感兴趣的观察者观察它们并根据需要处理它们。

这张票现在已经有一段时间没有动过了。对于某人来说,拿起补丁并在完成的最后一点完成它可能很容易。

关于python - Twisted:禁用 Twisted 框架类的日志记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7379712/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com