IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Logging Java Discussion :

Log4j & dispatch des logs en 2 fichiers


Sujet :

Logging Java

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 298
    Par défaut Log4j & dispatch des logs en 2 fichiers
    Bonjour,

    jaimerai bien savoir comment faire pour dispatcher les logs INFO/DEBUG & ERROR dans 2 fichiers de logs differents au lieu d'ecrire tout dans le meme fichier

    Merci

  2. #2
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2007
    Messages : 60
    Par défaut
    Il faut modifier le fichier log4j.properties.

    Voici une partie de code trouvé ici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    # Debug
    log4j.appender.Debug=org.apache.log4j.RollingFileAppender
    log4j.appender.Debug.File=./log/Debug.log
    log4j.appender.Debug.MaxFileSize=20000KB
    log4j.appender.Debug.Threshold=DEBUG
    log4j.appender.Debug.MaxBackupIndex=1
    log4j.appender.Debug.layout=org.apache.log4j.PatternLayout
    log4j.appender.Debug.layout.ConversionPattern=[%d{dd-MMM-yyyy HH:mm:ss}] %-5p [%t] %x%30F:%4L - %m%n
     
    # Info
    log4j.appender.Info=org.apache.log4j.RollingFileAppender
    log4j.appender.Info.File=./log/Info.log
    log4j.appender.Info.MaxFileSize=20000KB
    log4j.appender.Info.Threshold=INFO
    log4j.appender.Info.MaxBackupIndex=1
    log4j.appender.Info.layout=org.apache.log4j.PatternLayout
    log4j.appender.Info.layout.ConversionPattern=[%d{dd-MMM-yyyy HH:mm:ss}] %-5p [%t] %x%30F:%4L - %m%n

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 298
    Par défaut passage du nom des fichiers dynamiquement à partir du code
    Ok Merci,

    sinon ya til moyen de passer les noms des fichiers de logs en paramètre dans le code Java ??


    Merci

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2007
    Messages : 60
    Par défaut
    Il existe un moyen pour géré dynamiquement le fichier log, après que le logger a charger les paramètre du fichier de configuration, il faut parcourir les sorties du logger, et pointer ensuite sur l'objet de la sortie qu'on veut modifier, après modifier le fichier.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    Logger rootLogger = Logger.getRootLogger();
    Enumeration appenders = rootLogger.getAllAppenders();
    FileAppender fa = null;
    while(appenders.hasMoreElements())
    {
    Appender currAppender = (Appender) appenders.nextElement();
    if(currAppender instanceof FileAppender)
    {
    fa = (FileAppender) currAppender; //on récupère le fichier de sortie
    }
    }
    if(fa != null)
    {
    fa.setFile(logFileName); // on modifie le fichier de sortie
    fa.activateOptions();
    }
    else
    {
    log.info("No File Appender found");
    }

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 298
    Par défaut Définir les 2 error & info dès le début
    si j'ai bien compris,
    il faut s'amuser à chaque fois à changer la sortie de l'appender,

    yatil pas moyen de définir dès le debut le nom de chaque fichier de sortie?


    Merci

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 298
    Par défaut fichier de conf et lecture des appenders
    Bonjour,

    dans mon fichier de conf , j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    # Pattern to output the caller's file name and line number.
    log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n	
    log4j.appender.R=org.apache.log4j.RollingFileAppender
    log4j.appender.R.File=./log/log.log
    log4j.appender.R.MaxFileSize=100KB
    # Keep one backup file
    log4j.appender.R.MaxBackupIndex=1
    log4j.appender.R.layout=org.apache.log4j.PatternLayout
    log4j.appender.R.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
    # Debug
    log4j.appender.Debug=org.apache.log4j.RollingFileAppender
    log4j.appender.Debug.File=./log/Debug.log
    log4j.appender.Debug.MaxFileSize=20000KB
    log4j.appender.Debug.Threshold=DEBUG
    log4j.appender.Debug.MaxBackupIndex=1
    log4j.appender.Debug.layout=org.apache.log4j.PatternLayout
    log4j.appender.Debug.layout.ConversionPattern=[%d{dd-MMM-yyyy HH:mm:ss}] %-5p [%t] %x%30F:%4L - %m%n
     
    # Info
    log4j.appender.Info=org.apache.log4j.RollingFileAppender
    log4j.appender.Info.File=./log/Info.log
    log4j.appender.Info.MaxFileSize=20000KB
    log4j.appender.Info.Threshold=INFO
    log4j.appender.Info.MaxBackupIndex=1
    log4j.appender.Info.layout=org.apache.log4j.PatternLayout
    log4j.appender.Info.layout.ConversionPattern=[%d{dd-MMM-yyyy HH:mm:ss}] %-5p [%t] %x%30F:%4L - %m%n
    et dans mon code en faisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Logger rootLogger =logger.getRootLogger();
    			Enumeration appenders = rootLogger.getAllAppenders();
    			while (appenders.hasMoreElements() ){
     
    			  Appender app = (Appender)appenders.nextElement();
     
    			  if ( app instanceof FileAppender ){
     
     
    			    logger.info("Appended File=" + ((FileAppender)app).getFile());
     
     
    			  }
     
    			}
    dans mes logs de sortie je vois qu'un seul :
    Appended File=./log/log.log

    J'attends vos reponses car j'ai besoin de rediriger les logs d'info vers un fichier et les logs d'info vers un autre.

    Merci

    Merci

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 298
    Par défaut définition dynamique du nom de fichier de log
    En plus est ce possible avec log4j de definir de façon dynamique sans passer par le fichier de conf le nom de fichier de sortie pour chaque level : error et info à part,



    Merci

  8. #8
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    tu as créé des appender, mais tu ne les a pas lié à des loggers. Dans ton code, il manque donc la ligne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    log4j.logger.rootLogger=DEBUG, R, Info, Debug
    Qui signifie:

    tout ce qui est au moi du niveau debug, pour le rootlogger, est à envoyer vers les appenders R, Info et Debug


    Tu peux très bien te passer de fichier de config, entièrement ou partiellement. Par exemple

    avec fichier de config partiel:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Properties props = .... charger config par défaut
    props.put(....) // modifier des options de configuration par le code
    PropertyConfigurator.configure(props);
    sans fichier de config:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Appender appender = .... // créer une instance d'appender qui va bien et la configurer avec ses méthodes
    BasicConfigurator.configure(appender); // ajouter cet appender à la racine
    // ou
    Logger.getLogger(....).addAppender(appender);

Discussions similaires

  1. log4j: Répétitions des lignes dans le fichier log
    Par troumar dans le forum EDI et Outils pour Java
    Réponses: 0
    Dernier message: 06/05/2011, 11h02
  2. Log4J émet il des logs synchro ?
    Par Invité(e) dans le forum Logging
    Réponses: 1
    Dernier message: 17/01/2011, 15h38
  3. Réponses: 2
    Dernier message: 18/12/2010, 19h42
  4. Renvoi des logs dans un fichier
    Par Trebor dans le forum Shell et commandes GNU
    Réponses: 6
    Dernier message: 01/09/2009, 19h39
  5. [log4j] probleme des logs sur un fichier
    Par DOUDOUX11 dans le forum Logging
    Réponses: 1
    Dernier message: 23/01/2009, 10h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo