import logging
import sys


def logging_without_formatting():
    """
    La base de la journalisation.

    """
    logger = logging.getLogger("noformat")
    logger.debug("This is a debug message")
    logger.info("This is an info message")
    logger.warning("This is a warning message")
    logger.error("This is an error message")
    logger.critical("This is a critical message")


def logging_with_formatting():
    """
    Configurer un peu notre journalisation pour mettre en forme nos messages.

    """
    logger = logging.getLogger("withformat")
    formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
    # Créer une nouvelle configuration qui sort les messages de journal dans la console
    handler = logging.StreamHandler(sys.stdout)
    # Configurer cet objet pour utiliser notre format
    handler.setFormatter(formatter)
    # Configurer le handler pour afficher aussi les messages DEBUG et INFO
    handler.setLevel(logging.DEBUG)
    # Assigner notre configuration à notre logger
    # On doit faire tout ça parce qu'il n'y a pas de méthode
    # pour facilement définir une chaîne de formatage pour un logger
    logger.addHandler(handler)
    logger.warning("Message d'avertissement")


if __name__ == "__main__":
    # Par défaut, Python n'affiche des messages de journalisation
    # que s'ils excèdent une certaine sévérité.
    # Dans la plupart des langages, par défaut, c'est la sévérité
    # WARNING (en-dessous, on n'indique généralement pas de problème)
    # qui est la plus basse prise en compte
    logging_without_formatting()
    logging_with_formatting()
