2014-12-29 19 views
11

Sto eseguendo un'applicazione django con gunicorn e non riesco a vedere nessun messaggio di registro che sto scrivendo.Accesso a Django e gunicorn

Ecco il codice che scrive i registri:

logger = logging.getLogger(__name__) 

def home_page(request): 
    logger.warning('in home page') 

(nota: questo codice viene eseguito senza dubbio, dal momento che questa è una visione che porta alla home page)

Questa è la mia configurazione registri da impostazioni .py:

LOGGING = { 
    'version': 1, 
    'disable_existing_loggers': False, 
    'handlers': { 
     'console': { 
      'level': 'DEBUG', 
      'class': 'logging.StreamHandler', 
      'stream': sys.stdout, 
     }, 
    }, 
    'loggers': { 
     'django': { 
      'handlers': ['console'], 
     }, 
    }, 
    'root': {'level': 'INFO'}, 
} 

corro gunicorn come demone con i seguenti argomenti:

--access-logfile ../access.log --error-logfile --log-level debug ../error.log 

Sia access.log che error.log vengono creati e riempiti con messaggi gunicorn, ma non riesco a vedere i messaggi che scrivo.

Grazie

risposta

13

Ho risolto il mio problema. Fornire i dettagli in modo che possa aiutare qualcuno con problemi simili.

Deciso di non confondersi con i registri gunicorn e django e di creare un file di registro separato per django.

LOGGING = { 
    'version': 1, 
    'disable_existing_loggers': False, 
    'handlers': { 
     'console': { 
      'level': 'DEBUG', 
      'class': 'logging.StreamHandler', 
     }, 
     'logfile': { 
      'level':'DEBUG', 
      'class':'logging.FileHandler', 
      'filename': BASE_DIR + "/../logfile", 
     }, 
    }, 
    'root': { 
     'level': 'INFO', 
     'handlers': ['console', 'logfile'] 
    }, 
} 

Con questa configurazione ogni messaggio scritto con severità> = INFO sarà scritto nel file "logfile" che si trova appena fuori di directory di origine.

+0

Grazie! Avevo difficoltà a trovare un esempio di base come questo che funzionasse con gunicorn. – mirth23

+0

È scritto anche su stderr, giusto? –

+1

Penso che in realtà sia stato scritto su stderr di default. di scriverlo a anche a stdout si dovrebbe aggiungere un altro gestore con flusso specificato come questo: 'console_stdout': { 'livello': 'DEBUG', 'stream': sys.stdout, 'classe': ' logging.StreamHandler ' } –