Développement Java - Journalisation Développement Java - Journalisation Jean-Michel Richer [email protected] http://www.info.univ-angers.fr/pub/richer L3 Pro Informatique 2010-2011 1 / 21 Développement Java - Journalisation Plan Plan 1 Introduction 2 Log4j 3 Bibliographie 2 / 21 Développement Java - Journalisation Plan Objectifs Objectifs • se familiariser avec la journalisation • et notamment Log4j 3 / 21 Développement Java - Journalisation Introduction Introduction Introduction 4 / 21 Développement Java - Journalisation Introduction Rappel journalisation Journalisation (Logging) • historique des événements qui affectent un système • on utilise un journal (log file) pour enregistrer les opérations • objectifs divers : • sécurité • intégrité des données, opérations • performances 5 / 21 Développement Java - Journalisation Introduction Rappel journalisation Journalisation (Logging) En plus des aspects sécurité, intégrité, performance : • activer ou désactiver certains messages en fonction des besoins • plusieurs canaux • plusieurs niveaux d’affichage • plus pratique que println 6 / 21 Développement Java - Journalisation Log4j Log4j Log4j 7 / 21 Développement Java - Journalisation Log4j log4j Log4j projet de la fondation Apache, différentes implémentations : • log4j : Java • log4cxx : C++ • log4net : .Net • log4php : PHP http://logging.apache.org/ 8 / 21 Développement Java - Journalisation Log4j log4j Log4j propose trois sortes de composants : • Logger : canal pour l’envoi d’information • Appender : traitement de l’information • Layout : mise en forme 9 / 21 Développement Java - Journalisation Log4j le logger Logger • permet de définir un identifiant pour l’envoi d’information • création de ses propres Logger • ou utilisation du logger par défaut : root Logger 10 / 21 Développement Java - Journalisation Log4j Exemple Logger Logger 1 2 3 4 5 6 7 8 9 10 11 //Logging import org.apache.log4j.*; // use default logger static Logger rootLogger = Logger.getRootLogger(); // create your own logger with name static Logger myLogger = Logger.getLogger("myLogger"); // create your own logger with class name static Logger myObjectLogger = Logger.getLogger(MyObject.class); 11 / 21 Développement Java - Journalisation Log4j Niveaux d’affichage du logger Niveaux d’affichage on utilise la fonction setLevel() pour fixer le niveau d’affichage • DEBUG < INFO < WARN < ERROR < FATAL • ALL • OFF 12 / 21 Développement Java - Journalisation Log4j Exemple setLevel Logger setLevel 1 static Logger rootLogger = Logger.getRootLogger(); 2 3 rootLogger.setLevel(Level.DEBUG); 4 13 / 21 Développement Java - Journalisation Log4j Envoi d’un message Envoi d’un message on utilise les fonctions suivantes : • debug(Object message) • info(Object message) • warn(Object message) • error(Object message) • fatal(Object message) 14 / 21 Développement Java - Journalisation Log4j log4j Appender Appender plusieurs possibilités de traitement (cf. documentation) • ConsoleAppender : vers System.out ou System.err • FileAppender : dans un fichier • RollingFileAppender • DailyRollingFileAppender • SMTPAppender : envoi d’un email • SocketAppender • ... 15 / 21 Développement Java - Journalisation Log4j log4j Layout Layout - mise en forme trois possibilités : • SimpleLayout • HTMLLayout • PatternLayout : motif à définir http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/PatternLayout.html 16 / 21 Développement Java - Journalisation Log4j Utilisation de Log4j Utilisation • définir un fichier de configuration log4j.properties • le placer dans src sous Eclipse • ou le copier dans le répertoire de build • mettre log4j-1.2.15.jar dans le répertoire lib 17 / 21 Développement Java - Journalisation Log4j Exemple 1 Configuration de base 1 2 3 4 log4j.rootLogger=DEBUG, stdout log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target=System.out log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 5 log4j.appender.stdout.layout.ConversionPattern=%5p %c{1}:%L - %m%n 18 / 21 Développement Java - Journalisation Log4j Exemple avec fichier Configuration avec fichier 1 2 3 4 # set appender to file log4j.rootLogger=DEBUG, file log4j.appender.file=org.apache.log4j.FileAppender log4j.appender.file.File=file.log 5 log4j.appender.file.layout=org.apache.log4j.SimpleLayout 19 / 21 Développement Java - Journalisation Bibliographie Bibliographie Bibliographie 20 / 21 Développement Java - Journalisation Bibliographie Bibliographie, sitographie • Pro Apache Log4j, Samudra Gupta, APress, 2005 • http://logging.apache.org/log4j/1.2/manual.html 21 / 21