Ich liebe das wirklich so sehr, hier ist dein Arbeitsbeispiel! Im Ernst, das ist großartig!
Beginnen Sie, indem Sie dies in Ihre 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',
},
}
}
Was bedeutet das alles?
- Formatierer Ich mag es, wenn es im gleichen Stil wie ./manage.py runserver herauskommt
- Handler - Ich möchte zwei Protokolle - eine Debug-Textdatei und eine Infokonsole. Auf diese Weise kann ich mich (falls erforderlich) wirklich vertiefen und in einer Textdatei nachsehen, was unter der Haube passiert.
- Logger - Hier legen wir fest, was wir protokollieren möchten. Im Allgemeinen erhält django WARN und höher - die Ausnahme (daher propagieren) sind die Backends, in denen ich die SQL-Aufrufe gerne sehe, da sie verrückt werden können. Als letztes habe ich zwei Handler und schiebe alles darauf.
Wie aktiviere ich MYAPP, um es zu verwenden ...
Fügen Sie dies gemäß der Dokumentation oben in Ihre Dateien ein (views.py).
import logging
log = logging.getLogger(__name__)
Dann tun Sie dies, um etwas herauszuholen.
log.debug("Hey there it works!!")
log.info("Hey there it works!!")
log.warn("Hey there it works!!")
log.error("Hey there it works!!")
Die Protokollebenen werden hier und für reines Python hier erklärt .