Tengo el siguiente código que se ejecuta en cada solicitud de un wsgi (web2py) aplicación:Reemplazar controlador predeterminado de Python registrador
import logging, logging.handlers
from logging import StreamHandler, Formatter
def get_configured_logger(name):
logger = logging.getLogger(name)
if (len(logger.handlers) == 0):
# This logger has no handlers, so we can assume it hasn't yet been configured (Django uses similiar trick)
# === Configure logger ===
# Create Formatted StreamHandler:
FORMAT = "%(process)s %(thread)s: %(message)s"
formatter = logging.Formatter(fmt=FORMAT)
handler = logging.StreamHandler()
handler.setFormatter(formatter)
logger.addHandler(handler)
logger.setLevel(logging.DEBUG)
logger.debug('CONFIGURING LOGGER')
return logger
# Get app specific logger:
logger = get_configured_logger(request.application)
logger.debug("TEST")
Es la intención de configurar el registrador de una vez, con el controlador de formato que quiero. Funciona, excepto que estoy recibiendo entradas dobles en mi salida estándar:
81893 4329050112: CONFIGURING LOGGER
DEBUG:dummy:CONFIGURING LOGGER
81893 4329050112: TEST
DEBUG:dummy:TEST
¿Cómo utilizo mi nuevo controlador de formateado y deshacerse de/ocultar el defecto?
Nunca he usado esta clase antes, pero ¿no cree que logger.setLevel (logging.DEBUG) y logger.debug es algo redundante? – MiJyn
lkjoel- No, son dos cosas diferentes. llamar '.debug (..)' crea entradas de registro en el nivel de depuración, mientras que al establecer el nivel de registro, se le indica al controlador que * maneje * las entradas de registro en ese nivel. – Yarin
¿Está llamando 'logging.basicConfig' en cualquier lugar? Si es así, coméntelo. – unutbu