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 esTrue
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,
},
},
}