import logging


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

    Nous devons utiliser un logger et le configurer pour savoir comment afficher nos
    messages.

    Un logger peut utiliser plusieurs handlers à la fois, et chacun a pour rôle
    de transporter le message original vers une destination (fichier, console etc.)

    Les handlers sont configurés en deux étapes : d'abord on choisit le type de
    handler (fichier, console, etc.), et ensuite on lui associe un "formateur" pour
    savoir comment stocker le message.

    Notez : les loggers peuvent avoir un nom, et peuvent ainsi être retrouvés n'importe où
    via leur nom pendant l'exécution de votre script, en utilisant la fonction `getLogger`.

    """
    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.FileHandler("demo.log")
    # Configurer cet objet pour utiliser notre format
    handler.setFormatter(formatter)
    # Et accessoirement, changer le niveau minimal de sévérité
    handler.setLevel(logging.INFO)
    # 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_with_formatting()
