workers usage execstart app_module logging gunicorn

logging - usage - gunicorn workers



No se puede obtener el registro de acceso para trabajar para Gunicorn (2)

Especificando ''disable_existing_loggers'': False en logging.config.dictConfig funciona para mí.

disable_existing_loggers : si se especifica como False , los registradores que existen cuando se realiza esta llamada quedan solos. El valor predeterminado es True porque permite el comportamiento antiguo de una manera compatible con versiones anteriores. Este comportamiento es para deshabilitar cualquier registrador existente a menos que ellos o sus ancestros tengan un nombre explícito en la configuración de registro.

http://docs.python.org/2/library/logging.config.html#logging.config.fileConfig

Estoy corriendo gunicorn detrás de ngninx. Quiero registrar los errores en gunicorn a gunicorn-error.log y acceder a los registros a gunicorn-access.log.

Tengo el registro de errores funcionando pero no el registro de acceso, ¿qué estoy haciendo mal?

Este es mi gunicorn.conf.py:

bind = ''127.0.0.1:8888'' backlog = 2048 workers = 3 errorlog = ''/home/my/logs/gunicorn-error.log'' accesslog = ''/home/my/logs/gunicorn-access.log'' loglevel = ''debug'' proc_name = ''gunicorn-my'' pidfile = ''/var/run/my.pid''

Este es el script para ejecutar gunicorn:

#!/bin/bash set -e ENV=/home/my/env/bin/activate GUNICORN=gunicorn_django SETTINGS_PATH=/home/my/app/app/settings PROJECT_PATH=/home/my/app CONFROOT=/home/my/app/conf/gunicorn.conf.py cd $SETTINGS_PATH source $ENV export PYTHONPATH=$PROJECT_PATH exec $GUNICORN app.settings.staging -c $CONFROOT

Crea tanto gunicorn-error.log como gunicorn-access.log pero solo gunicorn-error.log obtiene cualquier registro, por ejemplo:

2012-11-20 11:49:57 [27817] [INFO] Starting gunicorn 0.14.6 2012-11-20 11:49:57 [27817] [DEBUG] Arbiter booted 2012-11-20 11:49:57 [27817] [INFO] Listening at: http://127.0.0.1:8888 (27817) 2012-11-20 11:49:57 [27817] [INFO] Using worker: sync 2012-11-20 11:49:58 [27825] [INFO] Booting worker with pid: 27825 2012-11-20 11:49:58 [27828] [INFO] Booting worker with pid: 27828 2012-11-20 11:49:58 [27830] [INFO] Booting worker with pid: 27830

¿Qué estoy haciendo mal? ¿Alguien quiere compartir su trabajo gunicorn.conf.py con registros de errores y registros de acceso?


He cambiado mi configuración de registro en Django a siguiente y me ayudó:

LOGGING = { ''version'': 1, ''disable_existing_loggers'': True, ''root'': { ''level'': ''WARNING'', ''handlers'': [''sentry''], }, ''formatters'': { ''verbose'': { ''format'': ''%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s'' }, ''generic'': { ''format'': ''%(asctime)s [%(process)d] [%(levelname)s] %(message)s'', ''datefmt'': ''%Y-%m-%d %H:%M:%S'', ''()'': ''logging.Formatter'', }, }, ''handlers'': { ''sentry'': { ''level'': ''ERROR'', ''class'': ''raven.contrib.django.handlers.SentryHandler'', }, ''console'': { ''level'': ''DEBUG'', ''class'': ''logging.StreamHandler'', ''formatter'': ''verbose'' }, ''error_file'': { ''class'': ''logging.FileHandler'', ''formatter'': ''generic'', ''filename'': ''/home/fungine/gunicorn.error.log'', }, ''access_file'': { ''class'': ''logging.FileHandler'', ''formatter'': ''generic'', ''filename'': ''/home/fungine/gunicorn.access.log'', }, }, ''loggers'': { ''django.db.backends'': { ''level'': ''ERROR'', ''handlers'': [''console''], ''propagate'': False, }, ''raven'': { ''level'': ''DEBUG'', ''handlers'': [''console''], ''propagate'': False, }, ''sentry.errors'': { ''level'': ''DEBUG'', ''handlers'': [''console''], ''propagate'': False, }, ''gunicorn.error'': { ''level'': ''INFO'', ''handlers'': [''error_file''], ''propagate'': True, }, ''gunicorn.access'': { ''level'': ''INFO'', ''handlers'': [''access_file''], ''propagate'': False, }, }, }