En primer lugar, respaldaré la nominación del marco de registro de Python . Sin embargo, tenga un poco de cuidado con la forma en que lo usa. Específicamente: deje que el marco de registro amplíe sus variables, no lo haga usted mismo. Por ejemplo, en lugar de:
logging.debug("datastructure: %r" % complex_dict_structure)
asegúrese de hacer:
logging.debug("datastructure: %r", complex_dict_structure)
porque aunque se ven similares, la primera versión incurre en el costo repr () incluso si está deshabilitada . La segunda versión evita esto. Del mismo modo, si lanza el suyo, sugeriría algo como:
def debug_stdout(sfunc):
print(sfunc())
debug = debug_stdout
llamado a través de:
debug(lambda: "datastructure: %r" % complex_dict_structure)
que, de nuevo, evitará la sobrecarga si la desactiva haciendo:
def debug_noop(*args, **kwargs):
pass
debug = debug_noop
La sobrecarga de calcular esas cadenas probablemente no importe a menos que sean 1) costosas de calcular o 2) la declaración de depuración esté en medio de, digamos, un ciclo n ^ 3 o algo así. No es que yo sepa nada de eso.