104 votes

Emplacement des journaux et des erreurs de Django

J'ai configuré un serveur django avec nginx, et il y a une erreur 403 sur certaines pages.

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

93voto

Andy Points 8252

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

# Un exemple de configuration de logging. Le seul logging tangible
# effectué par cette configuration est d'envoyer un e-mail aux
# administrateurs du site à chaque erreur HTTP 500 lorsque DEBUG=False.
# Voir http://docs.djangoproject.com/fr/dev/topics/logging pour
# plus de détails sur la personnalisation de votre configuration de logging.
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, cela ne crée pas de fichiers de log. Si vous souhaitez les avoir, vous devez ajouter un paramètre filename à vos handlers

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

Cela configurera un journal rotatif pouvant atteindre une taille de 15 Mo et conserver 10 versions historiques.

Dans la section loggersapplogfile aux handlers pour votre application

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

Cet exemple placera vos logs dans votre répertoire Django dans un fichier nommé APPNAME.log

51voto

chezwhite Points 333

Ajoutez ceci à 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,
        },
    },
}

Cela créera un fichier appelé debug.log à la racine de votre. https://docs.djangoproject.com/en/1.10/topics/logging/

13voto

slumtrimpet Points 1746

Configurer https://docs.djangoproject.com/en/dev/topics/logging/ et ensuite ces erreurs vont s'afficher là où vous les pointez. Par défaut, elles ont tendance à s'égarer, donc je commence toujours par une bonne configuration de logging 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/

Édition : 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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X