Journalisation des exceptions avec SLF4J

Consignation des exceptions à l'aide de SLF4J

1. Vue d'ensemble

Dans ce rapide didacticiel, nous allons montrer comment consigner les exceptions en Java à l'aide de l'APISLF4J. Nous utiliserons l'APIslf4j-simple comme implémentation de journalisation.

Vous pouvez explorer différentes techniques de journalisation dans l'un de nosprevious articles.

2. Dépendances Maven

Tout d'abord, nous devons ajouter les dépendances suivantes à nospom.xml:


    org.slf4j
    slf4j-api
    1.7.25



    org.slf4j
    slf4j-simple
    1.7.25

Les dernières versions de ces bibliothèques se trouvent surMaven Central.

3. Exemples

En général, toutes les exceptions sont enregistrées à l'aide de la méthodeerror() disponible dans la classeLogger. Il existe plusieurs variantes de cette méthode. Nous allons explorer:

void error(String msg);
void error(String format, Object... arguments);
void error(String msg, Throwable t);

Commençons par initialiser lesLogger que nous allons utiliser:

Logger logger = LoggerFactory.getLogger(NameOfTheClass.class);

Si nous devons simplement afficher le message d'erreur, nous pouvons simplement ajouter:

logger.error("An exception occurred!");

La sortie du code ci-dessus sera:

ERROR packageName.NameOfTheClass - An exception occurred!

C'est assez simple. Mais pour ajouter des informations plus pertinentes sur l'exception (y compris la trace de pile), nous pouvons écrire:

logger.error("An exception occurred!", new Exception("Custom exception"));

La sortie sera:

ERROR packageName.NameOfTheClass - An exception occurred!
java.lang.Exception: Custom exception
  at packageName.NameOfTheClass.methodName(NameOfTheClass.java:lineNo)

En présence de plusieurs paramètres, si le dernier argument d'une instruction de journalisation est une exception, SLF4J supposera que l'utilisateur souhaite que le dernier argument soit traité comme une exception au lieu d'un paramètre simple:

logger.error("{}, {}! An exception occurred!",
  "Hello",
  "World",
  new Exception("Custom exception"));

Dans l'extrait de code ci-dessus, le messageString sera formaté en fonction des détails de l'objet transmis. Nous avons utilisé des accolades comme espaces réservés pour les paramètresString transmis à la méthode.

Dans ce cas, le résultat sera:

ERROR packageName.NameOfTheClass - Hello, World! An exception occurred!
java.lang.Exception: Custom exception
  at packageName.NameOfTheClass.methodName(NameOfTheClass.java:lineNo)

4. Conclusion

Dans ce rapide tutoriel, nous avons découvert comment journaliser des exceptions à l'aide de l'API SLF4J.

Les extraits de code sont disponibles dans lesGitHub repository.