2015-02-03 11 views
5

Sto provando a configurare la mia configurazione di registrazione in settings.py e ci sono così tante opzioni, ho difficoltà a replicare il log del server di sviluppo integrato (che stampa sulla console).Come configurare il mio log Django in modo che funzioni come il log del server di sviluppo integrato?

Desidero che il registro di produzione registri le stesse informazioni che verrebbero normalmente stampate sulla console nel registro del server di sviluppo (richieste GET, informazioni di debug, ecc.). Devo o sapere quali impostazioni devo modificare sotto, o la posizione delle impostazioni per il registro del server di sviluppo integrato, in modo che possa copiarlo.

LOGGING = { 
    'version': 1, 
    'formatters': { 
     'verbose': { 
      'format': '%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s' 
     }, 
     'simple': { 
      'format': '%(levelname)s %(message)s' 
     }, 
    }, 
    'handlers': { 
     'console': { 
      'level': 'DEBUG', 
      'class': 'logging.StreamHandler', 
      'formatter': 'simple' 
      }, 
     'file': { 
      'level': 'DEBUG', 
      'class': 'logging.FileHandler', 
      'filename': '/home/django/django_log.log', 
      'formatter': 'simple' 
      }, 
     }, 
    'loggers': { 
     'django': { 
      'handlers': ['file'], 
      'level': 'DEBUG', 
      'propagate': True, 
      }, 
     } 
    } 

if DEBUG: 
    # make all loggers use the console. 
    for logger in LOGGING['loggers']: 
     LOGGING['loggers'][logger]['handlers'] = ['console'] 

Inoltre, non voglio dover aggiungere alcun codice altrove ma il mio settings.py se possibile. Non voglio entrare nel mio views.py e specificare quali errori stampare o registrare, non ho mai dovuto farlo con il server di sviluppo, quindi spero di poterlo capire.

+0

Sto usando uWSGI per la produzione, che reindirizzerà tutti i registri (dalla console) ai file. https://docs.djangoproject.com/en/1.8/howto/deployment/wsgi/uwsgi/ – JimmyYe

risposta

3

In Django 1.8, il default logging configuration per un ambiente di debug è:

Quando DEBUG è True:

  • Il django catch-all logger invia tutti i messaggi a livello WARNING o superiore al console. Django non effettua alcuna chiamata di registrazione in questo momento (tutta la registrazione è al livello DEBUG o gestita dai logger django.request e django.security).
  • Il logger py.warnings, che gestisce i messaggi da warnings.warn(), invia messaggi alla console.

Questa configurazione di registrazione sono disponibili all'indirizzo django.utils.log.DEFAULT_LOGGING. Si noti che il logger catch-all riceve effettivamente anche messaggi di informazione, non solo avvertimenti e soprattutto.

Quando si ignorano le impostazioni di registrazione predefinite, notare che disable_existing_loggers, se impostato su True, will shut up all of Django's default loggers.


Il server di sviluppo logs every incoming request directly to stderr come questo:

[18/Oct/2015 12:08:17] "GET /about/ HTTP/1.1" 200 9946 

Questo è specifico per il server di sviluppo e non sarà riportata a un ambiente di produzione, a meno che non si replica che with middleware.

Problemi correlati