Comment répondre aux besoins de            logs en production avec LOG4J ?Fabien Baligand                                 ...
Cliquez pour ajouter un titre         Besoins de logs en production    • Cliquez pour ajouter un plan            Debugging...
Cliquez pour ajouter un titre         Solutions    • Cliquez pour ajouter un plan            Debugging               Mettr...
Cliquez pour ajouter un titre         Résultat obtenu    • Cliquez pour ajouter *un planwhere id=?;48          INFO;john;1...
Cliquez pour ajouter un titre         Résultat obtenu (entrelacement)    • Cliquez pour ajouter *un planwhere id=?;48     ...
Cliquez pour ajouter un titre         Résultat obtenu (cas d’erreur)    • Cliquez pour ajouter *un planwhere id=?;48      ...
Cliquez pour ajouter un titre         Mise en oeuvre technique    • Cliquez pour (au sens Servlet 2.3) :            Un fil...
Cliquezdu filtre ajouter un titre           Code pour             // on lance le chrono    • Cliquez pour ajouter un plan ...
Cliquezdu filtre ajouter un titre          Code pour (suite)                  // On passe la main à la suite de la FilterC...
Cliquez pour ajouter un titre          Configuration LOG4J          log4j.rootCategory=ERROR,console     • Cliquez pour aj...
Cliquez pour ajouter un titre          Log des appels Back-End     • Cliquez pour ajouter un :             Plusieurs possi...
Cliquezcontextes ?          Quels pour ajouter un titre     • Cliquez pour ajouter un plan             Tous les contextes ...
Prochain SlideShare
Chargement dans…5
×

Comment répondre aux besoins de log en production avec log4j

2 340 vues

Publié le

Présente comment on peut répondre aux besoins de logs en production, concernant l'analyse de problèmes isolés ou la mesure des performances, grâce à la corrélation de logs, simplifiée avec log4j.

Publié dans : Technologie, Business
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Comment répondre aux besoins de log en production avec log4j

  1. 1. Comment répondre aux besoins de logs en production avec LOG4J ?Fabien Baligand Copyright©Sfeir (D.GEN.315.V2)
  2. 2. Cliquez pour ajouter un titre Besoins de logs en production • Cliquez pour ajouter un plan Debugging Être capable de retrouver un problème remonté par un client dans les logs Être capable de retrouver l’ensemble du contexte qui a amené au problème remonté et à l’erreur constatée Mesure de la performance et de la charge : Connaissance des performances et de la charge Statistiques et mesures de l’évolution Détection des éléments non performants2
  3. 3. Cliquez pour ajouter un titre Solutions • Cliquez pour ajouter un plan Debugging Mettre en place de la corrélation de logs, au moyen de LOG4J, en préfixant chaque ligne de log par : le login de l’utilisateur connecté un identifiant unique de requête HTTP Mesure de la performance et de la charge : Log du temps d’exécution de chaque requête HTTP entrante Log du temps d’exécution de chaque requête envoyée aux Back-Ends accédés (Base de Données, Annuaires LDAP, Web Services, …) Ecrire chaque ligne de log au format CSV3
  4. 4. Cliquez pour ajouter un titre Résultat obtenu • Cliquez pour ajouter *un planwhere id=?;48 INFO;john;103;NEWREQUEST;/Compte/Consulter INFO;john;103;BDD1;select from user INFO;john;103;WebService1;getListeDesComptes;79 INFO;john;103;HTTPREQUEST;/Compte/Consulter;1354
  5. 5. Cliquez pour ajouter un titre Résultat obtenu (entrelacement) • Cliquez pour ajouter *un planwhere id=?;48 INFO;john;103;NEWREQUEST;/Compte/Consulter INFO;john;103;BDD1;select from user INFO;kate;104;NEWREQUEST;/Compte/Consulter INFO;john;103;WebService1;getListeDesComptes;79 INFO;kate;104;BDD1;select * from user where id=?;43 INFO;john;103;HTTPREQUEST;/Compte/Consulter;135 INFO;kate;104;WebService1;getListeDesComptes;74 INFO;kate;104;HTTPREQUEST;/Compte/Consulter;1255
  6. 6. Cliquez pour ajouter un titre Résultat obtenu (cas d’erreur) • Cliquez pour ajouter *un planwhere id=?;48 INFO;john;103;NEWREQUEST;/Compte/Consulter INFO;john;103;BDD1;select from user ERROR;john;103;WebService1;getListeDesComptes;2530 <stacktrace> ERROR;john;103;HTTPREQUEST;/Compte/Consulter;25856
  7. 7. Cliquez pour ajouter un titre Mise en oeuvre technique • Cliquez pour (au sens Servlet 2.3) : Un filtre ajouter un plan en frontal de l’application web, injectant les informations de corrélation à LOG4J (login + requestId), et loggant les appels HTTP Une configuration LOG4J : préfixant chaque ligne de log par les informations de corrélation (login + requestId)7
  8. 8. Cliquezdu filtre ajouter un titre Code pour // on lance le chrono • Cliquez pour ajouter un plan long executionTime = System.currentTimeMillis(); try { // on assigne le numéro unique de la requête HTTP String requestId = getRequestId(); // on récupère le login de lutilisateur connecté String login = (String) session.getAttribute("LOGIN"); // on renseigne à Log4J le numéro de requete HTTP et le login de lutilisateur MDC.put("requestId", requestId); MDC.put("login", login); // on logge le début de traitement de la requête HTTP LOG.info("NEWREQUEST;" + request.getRequestURI());8
  9. 9. Cliquezdu filtre ajouter un titre Code pour (suite) // On passe la main à la suite de la FilterChain • Cliquez pour ajouter un plan filterChain.doFilter(request, response); // On logge le temps dexécution executionTime = System.currentTimeMillis() - executionTime; LOG.info("HTTPREQUEST;" + request.getRequestURI() + ";" + executionTime); } catch (Exception e) { // on logge lerreur executionTime = System.currentTimeMillis() - executionTime; LOG.error("HTTPREQUEST ;" + request.getRequestURI() + ";" + executionTime, e); } finally { // on libère le ThreadLocal MDC.remove("requestId"); MDC.remove("login"); }9
  10. 10. Cliquez pour ajouter un titre Configuration LOG4J log4j.rootCategory=ERROR,console • Cliquez pour ajouter un plan log4j.logger.filter.LogCorrelationFilter=INFO log4j.appender.console=org.apache.log4j.ConsoleAppender log4j.appender.console.layout=org.apache.log4j.PatternLayout log4j.appender.console.layout.ConversionPattern=%p;%X{login};%X{requestId};%m%n10
  11. 11. Cliquez pour ajouter un titre Log des appels Back-End • Cliquez pour ajouter un : Plusieurs possibilités plan Utilisation d’un composant central pour les appels Back-End loggant tous les appels Utilisation d’un dynamic proxy Utilisation d’un decorator Utilisation d’AOP11
  12. 12. Cliquezcontextes ? Quels pour ajouter un titre • Cliquez pour ajouter un plan Tous les contextes sont possibles : Application web Web Service Portail & Portlets Le principe peut tout à fait être mis en place pour des usages autres que web12

×