Les niveaux de journalisation

Les niveaux d'un journal applicatif de TRACE à FATAL, le seuil qui filtre, ce qu'on écrit à chaque niveau, l'anatomie d'une ligne et la différence avec un simple affichage à l'écran.

  • 29 cartes
  • 5 thèmes
  • Gratuit

Le programme, thème par thème

Le poids de chaque thème suit celui que lui donne l'examen.

  1. Notions
  2. Questions
  3. Ranger et relier
  4. Mises en situation
  5. Comprendre

Quelques cartes du deck

  • Journal applicatif : de quoi s'agit-il ?

    Voir la réponse

    Suite d'événements datés qu'un programme écrit pendant son exécution, dans un fichier ou un flux, pour qu'on puisse comprendre après coup ce qui s'est passé.

    En production, personne ne regarde le programme tourner et un débogueur n'est pas branché : le journal est la seule trace de ce qui s'est passé.

  • Le seuil est réglé sur INFO. Quels messages ce code écrit-il dans le journal ?

    ```java
    log.trace("entrée dans total()");
    log.debug("i = {}", i);
    log.info("commande {} créée", id);
    log.warn("stock bas : {}", stock);
    log.error("paiement refusé", e);
    `

    • Commande créée, stock bas, paiement refusé
    • Seulement le stock bas et le paiement refusé
    • Les cinq messages, du plus détaillé au plus grave
    • Seulement la commande créée, au niveau INFO
    Voir la réponse

    Commande créée, stock bas, paiement refusé

    Le seuil INFO garde INFO, WARN et ERROR, et écarte TRACE et DEBUG. Stock bas et paiement refusé seuls correspondraient à un seuil WARN.

  • Du moins grave au plus grave, les niveaux viennent dans l'ordre TRACE, DEBUG, …, …, ERROR.

    Voir la réponse

    Du moins grave au plus grave, les niveaux viennent dans l'ordre TRACE, DEBUG, INFO, WARN, ERROR.

    INFO raconte la vie normale du service, WARN signale une anomalie absorbée. Un seuil à un niveau garde ce niveau et tous les suivants.

  • Niveau de journalisation : de quoi s'agit-il ?

    Voir la réponse

    Gravité attachée à un message : TRACE, DEBUG, INFO, WARN, ERROR (et FATAL dans certaines bibliothèques), du plus détaillé au plus grave.

    Il permet de trier les messages : on garde les alertes en production et on active le détail seulement quand on enquête. SLF4J, par exemple, s'arrête à ERROR.

  • Un service en production remplit le disque en une nuit avec des millions de lignes DEBUG. Que faire ?

    • Supprimer tous les appels de journalisation du code
    • Remplacer les appels par des System.out.println
    • Passer tous les messages au niveau ERROR dans le code
    • Relever le seuil à INFO dans la configuration
    Voir la réponse

    Relever le seuil à INFO dans la configuration

    Le seuil sert exactement à cela : on règle le volume sans modifier le code, et on peut rebaisser le seuil à DEBUG le temps d'une enquête. Tout passer en ERROR noierait les vraies erreurs.