Twisted: deshabilita el registro de las clases de Twisted-framework

Mi cliente basado en Twisted envía paquetes UDP en un bucle. Por lo tanto estoy usando la clase DatagramProtocol. Esta es la fuente:

#!/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() 

Ahora, cuando ejecuto este cliente con twistd, recibo permanentemente mensajes de registro de las clases Twisted, es decir, de la clase 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 

Dado que estos mensajes de registro están contaminando mis “propios” registros, me pregunto si puedo deshabilitar estos mensajes de registro. Como puede ver, ya he reducido la cantidad de registros al llamar a protocol.noisy = False , pero todavía estoy recibiendo otros mensajes de registro. También el comando g = protocol.ClientFactory().noisy = False no ayuda.

¿Es posible deshabilitar el registro de todas las clases internas Twisted, de forma genérica, para TODOS los módulos? ¿Tal vez usando alguna configuración de registro retorcido?

El registro de Twisted es muy ingenuo. Sin embargo, no hay ninguna razón para que esto sea así, ya que twisted.python.log tiene muchas twisted.python.log es capaz de realizar el tipo de informes selectivos que le interesan a usted (y a otros).

Un evento de registro es solo un diccionario de claves y valores arbitrarios. El observador predeterminado conoce los diccionarios con una clave de 'message' . Quizás debido a esto, la mayoría de los mensajes de registro emitidos por Twisted en sí no intentan hacer nada, excepto proporcionar una cadena legible por humanos asociada con esta clave (también, muchos de los mensajes emitidos se agregaron antes del actual sistema de registro de Twisted, y así tenía el sistema más antiguo, más primitivo como consumidor).

No hace mucho tiempo, este problema molestó a alguien a quien se le pidió que presentara un ticket y comenzara a trabajar en una resolución a la parte UDP del problema en particular. El problema se resuelve en su mayoría, pero quedan algunas cosas por hacer.

La solución que se intentó es registrar un mensaje estructurado que transmita la misma información, pero no tiene ningún mensaje y, por lo tanto, el observador predeterminado no lo registra. Esto evita que los mensajes aparezcan en el registro de forma predeterminada, pero permite que un observador que esté específicamente interesado en estos eventos los observe y los maneje como se desee.

El boleto ha estado sentado intacto desde hace algún tiempo. Probablemente sería fácil para alguien recoger el parche y obtenerlo hasta el final.