Como configurar o formato do Python mensagens 2.3 madeireiras?
-
22-07-2019 - |
Pergunta
Em Python 2.4 e mais tarde, a configuração do módulo de registro para ter uma formatação mais básico é fácil:
logging.basicConfig (nível = opts.LOGLEVEL, format = "% (message) s")
mas para aplicações que necessitam para apoiar Python 2.3 parece mais difícil, porque a API de registro foi revisado em Py2.4. Em particular, basicConfig não leva quaisquer argumentos. Tentando uma variação sobre o único exemplo na documentação Py2.3, fico com esta:
try:
logging.basicConfig(level=opts.LOGLEVEL, format="%(message)s")
except:
logging.getLogger().setLevel(opts.LOGLEVEL)
h = logging.StreamHandler()
h.setFormatter(logging.Formatter("%(message)s"))
logging.getLogger().addHandler(h)
mas chamar este logger raiz em Py2.3, por exemplo.
logging.info("Foo")
dá saída duplicado:
Foo
INFO:root:Foo
Não consigo encontrar uma maneira de modificar o formato do manipulador existente no logger raiz em Py2.3 (o "exceto" bloco acima), daí a chamada "addHandler" que está produzindo a saída duplicada. Existe uma maneira para definir o formato do registrador de raiz, sem essa duplicação? Obrigado!
Solução
except:
sem classe de exceção [es] é uma boa maneira de ficar em apuros. Acredito módulo logging
em Python 2.3 tem a função basicConfig()
, mas com menos opções. Desde que aceita **kwargs
ele pode falhar a qualquer momento depois de fazer algum trabalho. Eu acho que já instalou um manipulador com formato padrão, em seguida, não conseguiu configurar alguma coisa. Depois de pegar exceção de ter instalado outro manipulador. Tendo 2 manipuladores chegar 2 mensagens para cada evento. A maneira mais simples no seu caso: evitar o uso basicConfig()
em tudo e logging
configure manualmente. E nunca use except:
se você não reraise ou log exceção capturada.