2011-11-05 15 views
6

Tengo un servidor que ejecuta nginx + UWSGI + python. UWSGI se ejecuta como daemon con el conjunto de indicadores: --daemonize /var/log/uwsgi.log que registra todos los errores de la aplicación.Cómo escribir para iniciar sesión en python con nginx + uwsgi

Me he dado cuenta de que por error si uso una declaración de impresión de python escribirá en el registro, pero solo en un error. La biblioteca de inicio de sesión de python estándar no parece afectar el registro en ninguna situación.

¿Cómo señalo las bibliotecas de inicio de sesión de python para usar el registro UWSGI?

Respuesta

4

uso logging.StreamHandler como controlador de registro

+3

Aunque su respuesta no fue detallada, me llevó por el camino correcto. Esta respuesta describe el método que utilicé: http://stackoverflow.com/questions/1383254/logging-streamhandler-and-standard-streams – elkelk

+0

@elkelk: ¿Podría ampliar? No necesito los filtros e intenté iniciar sesión con este método; todavía no imprime nada en el archivo. –

+0

Tengo un problema similar, pero con respecto a los contenedores Docker. Eche un vistazo a http://stackoverflow.com/questions/35511839/how-to-force-applications-stdout-logs-through-uwsgi – msgre

2

uWSGI es un servidor wsgi, y como tal pasa una corriente en el environ dict pasa a la aplicación exigible que alberga, utilizando la clave wsgi.errors. Si está escribiendo una aplicación wsgi desnuda, entonces escribir en esa secuencia debe hacer el trabajo. Si está utilizando un marco que abstrae la interfaz wsgi (y por el sonido que tiene, print normalmente escribiría en sys.stdout, que se cierra en un proceso parametrizado y nunca llegaría a ningún archivo de registro), lo hará probablemente necesite estudiar cómo maneja ese marco el registro de errores.

Cuestiones relacionadas