gwift-book/source/part-3-django-concepts/logging.adoc

2.0 KiB
Raw Blame History

Logging

La configuration des loggers est relativement simple, un peu plus complexe si nous nous penchons dessus, et franchement complète si nous creusons encore. Il est ainsi possible de définir des formattages, gestionnaires (handlers) et loggers distincts, en fonction de nos applications.

Sauf que comme nous lavons vu avec les 12 facteurs, nous devons traiter les informations de notre application comme un flux dévènements. Il nest donc pas réellement nécessaire de chipoter la configuration, puisque la seule classe qui va réellement nous intéresser concerne les StreamHandler. La configuration que nous allons utiliser est celle-ci:

  1. Formattage: à définir - mais la variante suivante est complète, lisible et pratique: {levelname} {asctime} {module} {process:d} {thread:d} {message}

  2. Handler: juste un, qui définit un StreamHandler

  3. Logger: pour celui-ci, nous avons besoin dun niveau (level) et de savoir sil faut propager les informations vers les sous-paquets, auquel cas il nous suffira de fixer la valeur de propagate à True.

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        'verbose': {
            'format': '{levelname} {asctime} {module} {process:d} {thread:d} {message}',
        },
        'simple': {
            'format': '{levelname} {asctime} {module} {message}',
        },
    },
    'handlers': {
        'console': {
            'level': 'DEBUG',
            'class': 'logging.StreamHandler',
            'formatter': "verbose"
        }
    },
    'loggers': {
        'khana': {
            'handlers': ['console'],
            'level': env("LOG_LEVEL", default="DEBUG"),
            'propagate': True,
        },
    }
}

Pour utiliser nos loggers, il suffit de copier le petit bout de code suivant:

import logging

logger = logging.getLogger(__name__)

logger.debug('helloworld');