La génération de traces applicatives est souvent utile. Il n’y a qu’à voir la popularité de certain composant tel que Log4j pour le Java. Chaque language dispose quelque part d’une bibliothèque permettant de tracer des messages. Un nouveau venu arrive pour le JavaScript.

Introduction

Convaincu par Log4j, Stephan Strittmatter a écrit log4js : une bibliothèque de génération de traces applicatives en JavaScript très similaire à l’interface de Log4j. Son objectif avoué est d’obtenir une place sur Apache Logging.

Les différents moyens de tracer

Actuellement, les Appender[1] disponibles sont :

  • DummyAppender : ne trace rien.
  • WindowAppender : ouvre une nouvelle page dans le navigateur et y insère les traces au fur et à mesure.
  • WindowsEventAppender : envoie les traces dans le journal d’événement de MS Windows[2].
  • FileAppender : écrit les traces dans un fichier sur le poste client[3].
  • AjaxAppender : permet d’émettre les traces au serveur distant au moyen de requête HTTP de façon asynchrône.
  • MetatagAppender : ajoute les traces sous forme de méta données[4].

Plusieurs Appender peuvent être utilisés simultanément.

Mise en place

Voici un exemple de code JavaScript à insérer dans une page HTML :

<script language="JavaScript" src="log4js.js" type="text/javascript" />
<script language="JavaScript">
<!-- 	var log = new Logger("rootLogger");
	log.setLogLevel(LogLevel.DEBUG);
	log.addAppender(new WindowAppender());
	log.trace("trace me");
	log.debug("also debug");
	log.error("arg, an error !");
//-->
</script>

Conclusion

Il existe bien d’autres bibliothèques pour ce genre d’opération. Stephan est même en discussion avec l’auteur d’un autre log4js afin de mutualiser leurs efforts et proposer un framework commun.

Très simple à mettre en place et d’utilisation, cet outil se révèle efficace. Il faudrait y ajouter quelques nouveaux Appender[5] et surtout le support du PatternLayout pour pouvoir formatter les messages tracés[6]. Et pourquoi de pas fournir une collection de TagLib pour générer côté serveur le code JavaScript à exécuter côté client ? Avec l’engouement que suscite Ajax, ce genre de composant devrait vite devenir très populaire.

Notes

[1] Composant implémentant l’écriture des traces.

[2] Nécessite le chargement d’un ActiveX.

[3] Nécessite également le chargement d’un ActiveX

[4] Ce composant est fortement inspiré de JavaScript Logging via Meta.

[5] Pour tracer via une boîte d’alerte ou dans une bulle d’aide.

[6] Paramétrage de la date de génération de la trace, de l’émetteur de la trace (nom ou URL de la page d’où est émise la trace).