Journalisation : définition
Garder les traces sur un support sûr des évènements survenus dans un système ou dans une application.
- Un ou plusieurs fichiers de log générés à l'exécution
- Conserver diverses infos :
Date, heure, utilisateur, action, valeur d'une variable (...)
[...] (mise en place) Dans le code produit par le développeur Existence d'outils de log Java et les outils de log Quels sont les outils Java mis à notre disposition? 2 API de journalisation: Common logging Log4j Common logging présentation API utilisée : java.util.logging fournie par défaut dans le JDK sortie au format texte ou XML Common logging création journal Création d'un journal: import java.util.logging.* ; protected static Logger logger = Logger.getLogger("myPackage.myClasse"); Handler fh = new FileHandler("myLog.log"); logger.addHandler(fh); Common logging les niveaux Différents niveaux de sévérité applicables aux messages journalisés. [...]
[...] (mise en place) Dans le code produit par le développeur Existence d'outils de log Java et les outils de log Quels sont les outils Java mis à notre disposition? 2 API de journalisation: Common logging Log4j Common logging présentation API utilisée : java.util.logging fournie par défaut dans le JDK sortie au format texte ou XML Common logging création journal Création d'un journal: import java.util.logging.* ; protected static Logger logger = Logger.getLogger("myPackage.myClasse"); Handler fh = new FileHandler("myLog.log"); logger.addHandler(fh); Common logging les niveaux Différents niveaux de sévérité applicables aux messages journalisés. [...]
[...] Conclusion Bibliographie Journalisation: définition Garder les traces sur un support sûr des évènements survenus dans un système ou dans une application. Un ou plusieurs fichiers de log générés à l'exécution Conserver diverses infos: Date, heure, utilisateur, action, valeur d'une variable Journal VS Fichier de log Journal système logiciel de gestion des messages du journal Fichier de log représentation physique du journal Pourquoi? (utilité) statistiques détection des défaillances correction de bugs développement d'application revenir sur un crash et refaire les opérations qui auraient été perdues (transactions) Avoir une image objective de la sécurité informatique de son système Comment? [...]
[...] Dans d'autres langages: En log4Net En log4cxx Existe aussi en python et C Et ailleurs? Solutions de log management SIEM (couche stockage + présentation) SEM: security event management Ne prend en compte que les logs SIM: security information/incident management Prend en compte d'autres sources scan d'antivirus) Conclusion Utilisation des logs: Développement Maintenabilité Evolutivité Réellement utilisé dans le milieu professionnel exemple: GFI et log4Net Pour aller plus loin (bibliographie) Tutoriel sur l'API logging http://cyberzoide.developpez.com/java/logging/ API log4Net http://logging.apache.org/log4net/release/sdk/index.html Tutoriel Log4J http://beuss.developpez.com/tutoriels/java/jakarta/log4j/#LIV.A.5 Les solutions de log management http://www.journaldunet.com/solutions/expert/securite/26548/gestion-des-logs---des-solutions-specifiques-pour-une-demande-en-forte-croissance.shtml Solutions de log en java Coralie Petermann Master2 eea-mi info 2008 Solutions de log en java - Plan Un log c'est quoi? [...]
[...] Niveau de journalisation = priorité du message permet de ne journaliser que les messages dont la priorité est > ou = à celle définie Common logging les niveaux Niveaux: ALL : tous les niveaux SEVERE : niveau le plus élevé WARNING : avertissement INFO : information CONFIG : configuration FINE : niveau faible FINER : niveau encore plus faible FINEST : niveau le plus faible OFF : aucun niveau Common logging les niveaux Par défaut INFO Modification possible: void setLevel(Level newLevel) logger.setLevel(Level.ALL); Common logging Ajout entrée Ajout d'une entrée dans le journal: logger.log(Level.WARNING,« attention erreur",variable); Alias de log: void severe(String msg) void warning(String msg) void info(String msg) void config(String msg) void fine(String msg) void finer(String msg) void finest(String msg) Common logging Output StreamHandler ConsoleHandler FileHandler SocketHandler MemoryHandler Log4j Log4j - Les niveaux Log4j - Stockage des logs Log4j - Les appenders Bibliothèques org.apache.log4j jdbc.JDBCAppender :base de données net.JMSAppender : Utilise JMS pour journaliser les événements nt.NTEventLogAppender : journal des événements de Windows lf5.LF5Appender : console basée sur Swing (trie ou filtre les événements ) varia.NullAppender : aucune journalisation net.SMTPAppender : Envoie un email avec certains événements net.SocketAppender : serveur de journalisation net.SyslogAppender : daemon Syslog (distant ou non) net.TelnetAppender : socket auquel on peut se connecter via telnet ConsoleAppender : Effectue la journalisation vers la console FileAppender : Journalise dans un fichier DailyRollingFileAppender : Journalise dans un fichier qui tourne régulièrement RollingFileAppender : Journalise dans un fichier, renommé lorsqu'il atteint une certaine taille et la journalisation reprend dans un nouveau fichier Log4j - Les layouts Layout = mise en forme des logs org.apache.log4j.SimpleLayout : Niveau - Message[Retour à la ligne] org.apache.log4j.PatternLayout : Layout le plus flexible format spécifié par un motif (pattern) Par défaut, format Message[Retour à la ligne] org.apache.log4j.XMLLayout : formate les données en XML ( utiliser un Appender de la famille des FileAppenders) org.apache.log4j.HTMLLayout format HTML Chaque nouvelle session de journalisation (réinitialisation de Log4j) donne lieu à un document HTML complet Log4j Installation Plusieurs étapes: Téléchargement du code source zippé Lier le projet à log4j- 1.2 .4.jar Importer le package log4j Instancier un logger, un layout et un/plusieurs appender(s) Assigner les appenders au logger Logger les informations que l'on souhaite Log4j Configuration Configuration dans le code source ou dans un fichier XML externe Au minimum 3 informations: Niveau Type d'appender Layout choisi Log4j Configuration Exemple: import org.apache.log4j.*; public class MyClass { static Logger myLogger = Logger.getLogger(MyClass.class.getName( Appender myAppender; SimpleLayout myLayout; Constructor public MyClass(){ myLogger.setLevel(Level.INFO); myLayout = new SimpleLayout(); myAppender = new ConsoleAppender(myLayout); } public void int float myLogger.info("les valeurs de la fonction + ( ) myLogger.debug("opération réussie"); if null){ myLogger.error("X est null"); } } //end } end class MyClass Log4j Avantages Conclusion - Avantages de log4j: Léger Possibilité de configuration externe Choix du format des messages loggés Choix du format du journal (fichier, console, ) Et ailleurs? Dans d'autres langages: En log4Net En log4cxx Existe aussi en python et C Et ailleurs? [...]
Source aux normes APA
Pour votre bibliographieLecture en ligne
avec notre liseuse dédiée !Contenu vérifié
par notre comité de lecture