El día 28 de octubre de 2013 21:37, Jose Caballero
<jcaballero....@gmail.com> escribió:
> Hola,
>
>
> quiero agnadir un nivel de log por debajo de DEBUG, llamado TRACE.
> Siguiendo cierta informacion que encontre en  stackoverflow, lo que es
> implementado es lo siguiente:
>
>
>     logging.TRACE = 5
>     logging.addLevelName(logging.TRACE, 'TRACE')
>     def trace(self, msg, *args, **kwargs):
>             self._log(logging.TRACE, msg, args, **kwargs)
>     logging.Logger.trace = trace

 _log envía el mensaje al logger sin chequear los niveles. Usa
Logger.log en su lugar:

def trace(self, msg, *args, **kwargs):
       self.log(logging.TRACE, msg, *args, **kwargs)

No veo clara la implementación que estás haciendo, con modificaciones
tanto del módulo logging como de la clase Logger/RootLogger. Sin
volver a la discursión de estos días sobre especializar o parchear
clases, deberías derivar tu propia clase de Logger en vez de usar el
logger root. Parcheando así podrías tener problemas con el
multiproceso.

import logging

class MyLogger(logging.getLoggerClass()):

    TRACE = 5
    logging.addLevelName(TRACE, "TRACE")

    def trace(self, msg, *args, **kwargs):
        self.log(self.TRACE, msg, *args, **kwargs)

logging.setLoggerClass(MyLogger)

logger = logging.getLogger(__name__)
logger.addHandler(logging.StreamHandler())

logger.setLevel("TRACE")
logger.trace("hi")

logger.setLevel("INFO")
logger.trace("hi")

>
>
> y depues de eso ya hago lo normal
>
>     log = logging.getLogger()
>     ....
>
>
> El unico problema es que siempre ejecuta las llamadas a log.trace(),
> independiente de el nivel de log. Por ejemplo, si hago   log.setLevel
> ( "INFO" )  responde a todos los mensajes de niveles INFO, WARNING,
> ERROR y CRITICAL, pero tambien TRACE.
> Se supone que TRACE solo deberia responder si el nivel es 5 o menos, no?
>
> Si alguien tiene una pista de porque no respeta el valor 5 y se
> ejecuta siempre, cualquier comentario sera mas que bienvenido.
>
>
> Muchas gracias por adelantado.
> Jose
> _______________________________________________
> Python-es mailing list
> Python-es@python.org
> https://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/



-- 
Hyperreals *R  "Quarks, bits y otras criaturas infinitesimales":
http://ch3m4.org/blog
Buscador Python Hispano: http://ch3m4.org/python-es
_______________________________________________
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/

Responder a