template tag registered one not must library custom python django logging traceback

python - registered - inclusion tags django



¿Cómo uso el registrador de Django para registrar un rastreo cuando se lo diga? (2)

try: print blah except KeyError: traceback.print_exc()

Solía ​​depurar así. Yo imprimiría a la consola. Ahora, quiero registrar todo en lugar de imprimir, ya que Apache no permite imprimir. Entonces, ¿cómo registro todo este rastreo?


Puedes usar el mecanismo de registro de python:

import logging ... logger = logging.getLogger("blabla") ... try: print blah # You can use logger.debug("blah") instead of print except KeyError: logger.exception("An error occurred")

Esto imprimirá la traza de la pila y funcionará con apache.


Si está ejecutando la versión troncal de Django (o 1.3 cuando se lanzó), hay una serie de configuraciones de registro predeterminadas integradas que están integradas con el módulo de registro estándar de Python. Para eso, todo lo que necesita hacer es import logging , llamar logger = logging.getLogger(__name__) y luego llamar a logger.exception(msg) y obtendrá tanto su mensaje como un seguimiento de pila. Los documentos para la funcionalidad de registro de Django y el método logger.exception de Python serían referencias útiles.

Si no desea utilizar el módulo de registro de Python, también puede import sys y escribir en sys.stderr lugar de usar imprimir. En la línea de comandos, esto va a la pantalla, cuando se ejecuta bajo Apache, entrará en sus registros de errores.