2013-10-08 2 views
43

J'ai configuré le serveur django avec nginx, et il y a une erreur 403 dans certaines pages.Emplacement des journaux et des erreurs Django

Où puis-je trouver les journaux django? Où puis-je voir les erreurs en détail?

+0

Que faites-vous entre nginx et Django? gunicorn? Utilisez-vous un superviseur? – Joseph

+0

Avez-vous défini DEBUG = True dans votre fichier settings.py? Si c'est le cas, dans le cas où les erreurs ressemblent à http://i.imgur.com/TWL6f.png, il s'agit probablement d'un problème de django. Si l'erreur 403 n'est pas un message détaillé, alors je suppose que c'est un problème de nginx. S'il s'agit d'un problème Django, démarrez votre serveur django en utilisant la console, et allez à la page qui vous donne l'erreur. Espérons que la sortie de la console sera suffisante pour que vous puissiez résoudre votre problème. – user1876508

Répondre

46

Logs sont définies dans votre fichier settings.py. Un nouveau projet par défaut ressemble à ceci:

# A sample logging configuration. The only tangible logging 
# performed by this configuration is to send an email to 
# the site admins on every HTTP 500 error when DEBUG=False. 
# See http://docs.djangoproject.com/en/dev/topics/logging for 
# more details on how to customize your logging configuration. 
LOGGING = { 
    'version': 1, 
    'disable_existing_loggers': False, 
    'filters': { 
     'require_debug_false': { 
      '()': 'django.utils.log.RequireDebugFalse' 
     } 
    }, 
    'handlers': { 
     'mail_admins': { 
      'level': 'ERROR', 
      'filters': ['require_debug_false'], 
      'class': 'django.utils.log.AdminEmailHandler' 
     } 
    }, 
    'loggers': { 
     'django.request': { 
      'handlers': ['mail_admins'], 
      'level': 'ERROR', 
      'propagate': True, 
     }, 
    } 
} 

Par défaut, ils ne créent pas de fichiers journaux. Si vous voulez ceux-ci, vous devez ajouter un paramètre filename à votre handlers

'applogfile': { 
     'level':'DEBUG', 
     'class':'logging.handlers.RotatingFileHandler', 
     'filename': os.path.join(DJANGO_ROOT, 'APPNAME.log'), 
     'maxBytes': 1024*1024*15, # 15MB 
     'backupCount': 10, 
    }, 

Cela crée un journal rotatif qui peut obtenir 15 Mo en taille et conserver 10 versions.

Dans la section loggers d'en haut, vous devez ajouter applogfile au handlers pour votre application

'loggers': { 
     'django.request': { 
      'handlers': ['mail_admins'], 
      'level': 'ERROR', 
      'propagate': True, 
     }, 
     'APPNAME': { 
      'handlers': ['applogfile',], 
      'level': 'DEBUG', 
     }, 
    } 

Cet exemple va mettre vos journaux dans votre racine Django dans un fichier nommé APPNAME.log

+0

do 'logger = logging.getLogger ('APPNAME')' dans ce cas –

9

Configuration https://docs.djangoproject.com/en/dev/topics/logging/ et alors ces erreurs feront écho là où vous les pointez. Par défaut, ils ont tendance à partir dans les mauvaises herbes, donc je commence toujours avec une bonne configuration de journalisation avant toute autre chose.

Voici un très bon exemple pour une configuration de base: https://ian.pizza/b/2013/04/16/getting-started-with-django-logging-in-5-minutes/

Edit: Le nouveau lien est déplacé vers: https://github.com/ianalexander/ianalexander/blob/master/content/blog/getting-started-with-django-logging-in-5-minutes.html

+1

Notez que Ian a renommé son domaine en 'ian.pizza', donc voici le lien actuel: https://ian.pizza/b/2013/04/16/getting-started-avec-django-logging-in-5-minutes/ – Jan

8

Ajouter à votre settings.py:

LOGGING = { 
    'version': 1, 
    'disable_existing_loggers': False, 
    'handlers': { 
     'file': { 
      'level': 'DEBUG', 
      'class': 'logging.FileHandler', 
      'filename': 'debug.log', 
     }, 
    }, 
    'loggers': { 
     'django': { 
      'handlers': ['file'], 
      'level': 'DEBUG', 
      'propagate': True, 
     }, 
    }, 
} 

Et il sera créer un fichier appelé debug.log à la racine de votre. https://docs.djangoproject.com/en/1.10/topics/logging/

+1

Sur Apache2, wsgi va essayer de créer un fichier dans '/ var/www/debug.log'. Cela créera 2 fichiers séparés si votre projet Django est en dehors du répertoire '/ var/www /'. Veuillez utiliser ''fichier '': os.path.join (BASE_DIR, 'debug.log'),' à la place. –

Questions connexes