logging : standard, simple et versatile

Type:
pyconfr
Audience level:
Novice
Category:
tutoriel
Septembre 15th 10 matin – 11 matin

Description

Atelier de (re)découverte de la bibliothèque de "logging".

Abstract

Slides

http://tuttu.info/~feth/pyconfr2012_logging.svg

Réalisés avec inkscape et Sozi, ces slides fonctionnent directement dans votre navigateur moderne (chromium, firefox...).

Qu'est-ce que logger ?

Logger (ou journaliser en français), consiste à émettre et consigner des messages ou enregistrements au cours de l'exécution d'un programme. Ces messages sont accompagnés de nombreuses informations contextuelles (domaine, émetteur, ligne de code source...) et sont convoyés vers un ou plusieurs systèmes capables de les prendre en charge (du terminal au log système en passant par les mails ou le système d'alerte). Il existe plusieurs normes concernant la journalisation, et logging est le moyen le plus aisé de s'y conformer.

Il est en général préférable -même pour déboguer- d'utiliser logging plutôt que print qui est trop rudimentaire ; en effet, logging offre une fonctionnalité standard, avec une API proche de celle d'autres langages et prend en charge la majorité des besoins futurs quelle que soit l'évolution de l'application.

Déroulement

  • Organisation du module logging de la bibliothèque standard Python
  • utilisation au sein d'un projet jouet
    • en replacement de print (forme la plus simple)
    • mise en forme paresseuse
    • perfectionnement par petites touches pour répondre à des besoins un peu plus sophistiqués (voir thèmes abordés)
    • utilisation d'un wrapper pour limiter le code "boilerplate".

Thèmes abordés

  • créer un ou des loggers
  • domaine de logging
  • les handlers qui prennent en charge le traitement final du message
  • la mise en forme,
  • ... (pourquoi pas le filtrage des messages) ...