J'adore vraiment cela, voici votre exemple de travail! Sérieusement, c'est génial!
Commencez par mettre ceci dans votre settings.py
LOGGING = {
'version': 1,
'disable_existing_loggers': True,
'formatters': {
'standard': {
'format' : "[%(asctime)s] %(levelname)s [%(name)s:%(lineno)s] %(message)s",
'datefmt' : "%d/%b/%Y %H:%M:%S"
},
},
'handlers': {
'null': {
'level':'DEBUG',
'class':'django.utils.log.NullHandler',
},
'logfile': {
'level':'DEBUG',
'class':'logging.handlers.RotatingFileHandler',
'filename': SITE_ROOT + "/logfile",
'maxBytes': 50000,
'backupCount': 2,
'formatter': 'standard',
},
'console':{
'level':'INFO',
'class':'logging.StreamHandler',
'formatter': 'standard'
},
},
'loggers': {
'django': {
'handlers':['console'],
'propagate': True,
'level':'WARN',
},
'django.db.backends': {
'handlers': ['console'],
'level': 'DEBUG',
'propagate': False,
},
'MYAPP': {
'handlers': ['console', 'logfile'],
'level': 'DEBUG',
},
}
}
Maintenant qu'est-ce que tout cela signifie?
- Formateurs J'aime qu'il ait le même style que ./manage.py runserver
- Gestionnaires - Je veux deux journaux - un fichier texte de débogage et une console d'informations. Cela me permet de vraiment creuser (si nécessaire) et de regarder un fichier texte pour voir ce qui se passe sous le capot.
- Enregistreurs - Voici où nous définissons ce que nous voulons enregistrer. En général, django obtient WARN et au-dessus - l'exception (donc propager) est les backends où j'aime voir les appels SQL car ils peuvent devenir fous .. Le dernier est mon application où j'ai deux gestionnaires et y pousse tout.
Maintenant, comment puis-je activer MYAPP pour l'utiliser ...
Selon la documentation, placez-le en haut de vos fichiers (views.py).
import logging
log = logging.getLogger(__name__)
Ensuite, pour sortir quelque chose, faites ceci.
log.debug("Hey there it works!!")
log.info("Hey there it works!!")
log.warn("Hey there it works!!")
log.error("Hey there it works!!")
Les niveaux de journalisation sont expliqués ici et pour python pur ici .
settings.py
, c'est-MYAPP
à- dire dans cet exemple, doit également être le paramètre dans l'appel àlogging.getLogger
. Par conséquent, si votre projet contient de nombreuses applications autonomes et que vous souhaitez qu'elles utilisent un enregistreur commun, vous devez utiliser à lalogging.getLogger('MYAPP')
place delogging.getLogger(__name__)
Basé en partie sur la configuration de journalisation suggérée par rh0dium et quelques recherches supplémentaires que j'ai effectuées moi-même, j'ai commencé à assembler un exemple de projet Django avec de jolis paramètres de journalisation par défaut - fail-nicely-django .
Exemple de sortie de fichier journal:
L'utilisation détaillée est expliquée dans le README , mais essentiellement, vous copiez le module de journalisation dans votre projet Django et l'ajoutez
from .logger import LOGGING
en bas de votre settings.py .la source