95 votes

Journal simple à l’exemple de fichier pour django 1.3 +

Les notes de dire:

Django 1.3 ajoute un cadre de niveau soutien pour Python module de journalisation.

C'est gentil. J'aimerais profiter de cette. Malheureusement, la documentation n'est pas tous à moi sur un plateau d'argent sous la forme de travail complet exemple de code qui montre comment simple et précieux.

Comment puis-je configurer cette funky nouvelle fonctionnalité que j'ai poivre mon code avec

logging.debug('awesome stuff dude: %s' % somevar)

et voir le fichier "/tmp/de l'application.journal" remplir avec

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 valeur par défaut de Python de la journalisation et de ce "cadre-niveau de soutien"?

180voto

rh0dium Points 2771

J'ai vraiment aime tellement cette ici est votre exemple! Sérieusement c'est génial!

Commencez par mettre 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 ce que signifie tout cela?

  1. Formaters je l'aime à en sortir le même style que ./manage.py runserver
  2. Les gestionnaires d' - je veux deux journaux - un texte de débogage du fichier, et une info de la console. Cela me permet de vraiment creuser (si nécessaire) et de regarder un fichier texte afin de voir ce qui se passe sous le capot.
  3. Des bûcherons - c'est Là que nous réalisons ce que nous voulons journal. En général django obtient AVERTIR et au - dessus de l'exception (d'où la propagation) est le backends où j'aime à voir les appels SQL, car ils peuvent devenir fou.. Dernier est mon application j'ai deux maîtres-chiens et pousser tout à elle.

Maintenant, comment puis-je activer MYAPP à l'utiliser...

Par la documentation de mettre cela au-dessus de vos fichiers (views.py)..

import logging
log = logging.getLogger(__name__)

Ensuite, pour obtenir quelque chose hors de ce faire.

log.debug("Hey there it works!!")
log.info("Hey there it works!!")
log.warn("Hey there it works!!")
log.error("Hey there it works!!")

Journal niveaux sont expliquées ici et pour un pur python ici.

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