Log2 : un petit système de logging en Java

Un petit développement personnel, que j’ai fait il y a bien longtemps, et que j’ai décidé de sortir de mes tiroirs et de publier, car je me suis dit que le reste de l’humanité en avait peut être besoin. Ou pas.

Publié le

Tout d’abord, si vous ne savez pas ce que c’est que du « log » ou « Java », j’ai pensé a vous, voici une jolie image. Voilà, vous pouvez reprendre une activité normale.

Vous trouverez Log2 sur Github, en LGPL. Le code est compilé dans downloads.

Présentation

Log2 est un système de logging en Java très léger et très simple.

  • Il n’y a pas de configuration par défaut, pas de threads, pas de mise en cache,
  • Pas de configuration par classes, pas de jar à inclure autre que Log2.jar
  • Testé intensivement, sans bug connus

Je l’ai écris car j’avais plusieurs besoins :

  • Des messages verbeux, où l’on sait toujours de « qui » et « d’où » le message a été produit
  • Un truc simple, ou je ne suis pas obligé à lire des pages de doc, de créer des fichiers XML de configuration « juste pour ça »
  • Une faible empreinte dans le code : par exemple pas d’initialisation du système de log dans chaque classe.
  • Qui puisse se faire passer pour slf4j, afin de ne pas se servir de ce dernier quand une biblio en a besoin.

J’ai parfaitement conscience que Log2 et de toute façon moins puissant, moins fonctionnel, ne permet pas de faire des stats, du profilage, de la centralisation, de l’analyse, etc. Ce n’est vraiment pas fait pour.

Il faut le voir comme un remplaçant de System.out.println("Mon message");.

Un exemple ? Regardez les commentaires de ma classe de démonstration

Le dump

La classe Log2Dump permet de collectionner des variables (ou ce que vous voulez) afin de les publier avec votre message de log. Si c’est un fichier, un tableau, un enum, un objet, voir un autre Log2Dump, alors le formatage sera verbeux, avec toutes les infos que le code dispose.

Si vous voulez que les objets d’une classe choisissent eux-mêmes le contenu qui sera affiché dans un « dump », alors implémentez Log2Dumpable

Il n’y a que trois niveaux de log :

  • info, pour dire « je fait quelque chose »
  • error, pour dire « aye, nous avons un problème »
  • debug, pour dire « je fait ça, mais ce n’est pas important pour toi, utilisateur »

Généralement, quand mon code fonctionne, je commente les appels à debug (ça me fait des commentaires bien écris et ça allege mes logs).

Il existe un système de filtre assez rudimentaire : voir les commentaires de la fonction createFilter() dans Log2.java.

Enfin l’appel à Log2 peut être statique, depuis sa classe, ou alors vous pouvez en instancier plusieurs où vous voulez (car pour le coup rien est statique dans son exécution).

Plus d’infos, de mise à jour, et d’interaction : passez par Github !