¿Cómo puedo enviar mensajes de seguimiento a la consola (como print
) cuando estoy ejecutando mi aplicación Django en manage.py runserver
, pero esos mensajes se envían a un archivo de registro cuando ejecuto la aplicación en Apache?
He revisado el registro de Django y aunque me quedé impresionado con su flexibilidad y capacidad de configuración para usos avanzados, todavía estoy confundido con la forma de manejar mi sencilla de casos de uso.
Respuestas:
El texto impreso en stderr aparecerá en el registro de errores de httpd cuando se ejecute bajo mod_wsgi. Puede usar
print
directamente o usarlogging
en su lugar.fuente
print("Goodbye cruel world!", file=sys.stderr)
Aquí hay una solución basada en registros de Django. Utiliza la configuración DEBUG en lugar de verificar si está ejecutando el servidor de desarrollo o no, pero si encuentra una mejor manera de verificarlo, debería ser fácil de adaptar.
consulte https://docs.djangoproject.com/en/dev/topics/logging/ para obtener más detalles.
fuente
LOGGING['loggers'][logger]['handlers'] += ['console']
settings.py
hacia la parte inferior y lo configuréDEBUG = True
(busque esa configuración cerca de la parte superior en el mismo archivo). Luego, ejecutopython manage.py runserver
desde una terminal (consulte los documentos de django para obtener más detalles) y los mensajes de registro aparecerán en la ventana de la terminal. En producción, usaría un settings.py diferente, dondeDEBUG = False
- los mensajes de registro van/path/to/your/file.log
.Puede configurar el registro en su
settings.py
archivo.Un ejemplo:
Sin embargo, eso depende de la configuración de DEBUG, y tal vez no quieras tener que preocuparte por cómo está configurado. Vea esta respuesta sobre ¿Cómo puedo saber si mi aplicación Django se está ejecutando en el servidor de desarrollo o no? para una mejor forma de escribir ese condicional. Editar: el ejemplo anterior es de un proyecto Django 1.1, la configuración de registro en Django ha cambiado algo desde esa versión.
fuente
Yo uso esto:
logging.conf:
testapp.py:
fuente
Puede hacer esto con bastante facilidad con
tagalog
(https://github.com/dorkitude/tagalog)Por ejemplo, mientras que el módulo de Python estándar escribe en un objeto de archivo abierto en modo adjunto, el módulo de App Engine (https://github.com/dorkitude/tagalog/blob/master/tagalog_appengine.py) anula este comportamiento y en su lugar usa
logging.INFO
.Para obtener este comportamiento en un proyecto de App Engine, simplemente se podría hacer:
Puede ampliar el módulo usted mismo y sobrescribir la función de registro sin mucha dificultad.
fuente
Esto funciona bastante bien en mi local.py, me ahorra estropear el registro regular:
fuente