-
AJAX et log4j
Bonjour,
aujourd'hui j'ai une application WEB (Struts) qui utilise log4j pour loguer les messages. J'aimerais savoir si il était possible d'afficher en temps réel (sur le client) avec AJAX les messages logues par le serveur, en d'autres termes existe-il un composant javascript AJAX qui est capable de scruter le serveur et retourner les messages logues par log4j?
J'ai trouve le lien http://ajaxpatterns.org/Javascript_Logging_Frameworks
qui presente plusieurs librairies javascript et qui permette d'ENVOYER des logs au serveur en AJAX, mais je n'ai pas trouvé le moyen de RECEVOIR des logs du serveur.
Je ne sais pas si techniquement c'est possible, je vous remercie de vos reponses.
Angelo
-
Bonjour,
Cela est bien sur possible.
Il te suffit de faire une page d'erreur generic et d'y ecrire ta stack d'erreur.
Ensuite tu configures ton serveur pour que la page s'affiche chaque fois qu'une exception arrive. Ou tu peux encore ajouter dans toutes tes pages un include contenant cette stack.
Bref, c'est à toi de faire le nécessaire pour retourner la stack d'exception vers le client.
-
Bonjour yolepro,
merci de ta réponse, mais je veux afficher en temps réel les messages logues de log4j, ce qui implique que le client doit scruter les messages (AJAX) logues au niveau du serveur et le serveur doit retourner les messages logues par lojg.
Je suis parti sur le développemnt du composant que je recherchais et ca commence à marcher. Il y a:
* un appender AjaxAppender qui logue les messages dans une listes de type FIFO qui utilise la classe edu.emory.mathcs.backport.java.util.concurrent.ConcurrentLinkedQueue qui permet de gérer les queues.
* un composant AJAX base sur Ajax.PeriodicalUpdater de prototype.js qui appelle le serveur pour demander toutes les N frequences un nombre M de message a recuperes. L'url AJAX appelle la servlet Log4AjaxServlet
* la servelt Log4AjaxServlet qui recupere M nombres de messages stocke dans la queue ConcurrentLinkedQueue .
Ce qu'il me reste a faire, c'est de voir si il y a possibilité de gerer un scope (Application, Session, Request) pour ne pas récuperer tous les logs (si plusieurs personnes sont connectes au serveur) et d'etudier log4javscript pour loguer les messages du serveur dans une console d'un navigateur.
Si quelqu'un est interesse par ce composant, j'ai l'intention de l'integrer dans le projet JSControlsTags sur http://jscontrolstags.sourceforge.net/
Angelo