Les notes de version disent:
Django 1.3 ajoute une prise en charge au niveau du framework pour le module de journalisation de Python.
C'est bien. J'aimerais en profiter. Malheureusement la documentation ne me donne pas tout sur un plateau d'argent sous la forme d'un exemple de code de travail complet qui montre à quel point c'est simple et précieux.
Comment configurer cette nouvelle fonctionnalité géniale pour que je puisse poivrer mon code avec
logging.debug('really awesome stuff dude: %s' % somevar)
et voir le fichier "/tmp/application.log" se remplir de
18:31:59 Apr 21 2011 awesome stuff dude: foobar
18:32:00 Apr 21 2011 awesome stuff dude: foobar
18:32:01 Apr 21 2011 awesome stuff dude: foobar
Quelle est la différence entre la journalisation par défaut Python et ce "support au niveau du framework"?
J'adore vraiment ceci, 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?
Maintenant, comment puis-je activer MYAPP pour l'utiliser ...
Par le documentation mettez cela 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 log sont expliqués ici et pour pur python ici .
Basé en partie sur la configuration de la journalisation suggérée par rh0dium et quelques recherches supplémentaires Je l'ai fait moi-même, j'ai commencé à assembler un exemple Django projet avec des valeurs par défaut de journalisation Nice - échec -nicely-Django .
Exemple de sortie du fichier journal:
2016-04-05 22:12:32,984 [Thread-1 ] [INFO ] [djangoproject.logger] This is a manually logged INFO string.
2016-04-05 22:12:32,984 [Thread-1 ] [DEBUG] [djangoproject.logger] This is a manually logged DEBUG string.
2016-04-05 22:12:32,984 [Thread-1 ] [ERROR] [Django.request ] Internal Server Error: /
Traceback (most recent call last):
File "/Users/Kermit/.virtualenvs/fail-nicely-Django/lib/python3.5/site-packages/Django/core/handlers/base.py", line 149, in get_response
response = self.process_exception_by_middleware(e, request)
File "/Users/Kermit/.virtualenvs/fail-nicely-Django/lib/python3.5/site-packages/Django/core/handlers/base.py", line 147, in get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/Users/Kermit/projekti/git/fail-nicely-Django/djangoproject/brokenapp/views.py", line 12, in brokenview
raise Exception('This is an exception raised in a view.')
Exception: This is an exception raised in a view.
L'utilisation détaillée est expliquée dans le readme , mais essentiellement, vous copiez le module logger dans votre Django projetez et ajoutez from .logger import LOGGING
en bas de votre settings.py .