Log4js – génération de traces en Javascript
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.
Sommaire
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).
log4js – French blog of Sébastien Lecacheur
Sébastien Lecacheur wrote an article about log4js in french. Thank you very much for this! I asked him alread if he could translate it to english to to use it as basis for my documentation. I currently started to set up a project environment with…
log4js – Sébastien Lecacheur article translated
Ben Simpson has translated Sébastien Lecacheur’s French article about log4js I already mentioned here some days ago for a bigger community to English: http://www.javablog.com/2005/12/25/1135572615942.html Many thanks for this support, Ben! I…
Log4js: Version 0.2 will be released soon
I want to inform you, that the last weeks I had to do a lot in other projects. Because of that the release of Log4js 0.2 will be delayed for some days. I still search for some testers especially on Mac and Linux/Unix to approve the version.