Em primeiro lugar, vou apoiar a nomeação do framework de registro de python . No entanto, tenha um pouco de cuidado ao usá-lo. Especificamente: deixe a estrutura de registro expandir suas variáveis, não faça você mesmo. Por exemplo, em vez de:
logging.debug("datastructure: %r" % complex_dict_structure)
certifique-se de fazer:
logging.debug("datastructure: %r", complex_dict_structure)
porque embora pareçam semelhantes, a primeira versão incorre no custo repr (), mesmo se estiver desabilitada . A segunda versão evita isso. Da mesma forma, se você lançar o seu próprio, sugiro algo como:
def debug_stdout(sfunc):
print(sfunc())
debug = debug_stdout
chamado via:
debug(lambda: "datastructure: %r" % complex_dict_structure)
o que, novamente, evitará a sobrecarga se você desativá-lo fazendo:
def debug_noop(*args, **kwargs):
pass
debug = debug_noop
A sobrecarga de computação dessas strings provavelmente não importa, a menos que sejam 1) caras de calcular ou 2) a instrução de depuração esteja no meio de, digamos, um loop n ^ 3 ou algo assim. Não que eu soubesse algo sobre isso.