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 :

Récupération / Modification d'un Appender


Sujet :

Logging Java

  1. #1
    in
    in est déconnecté
    Membre Expert Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Par défaut Récupération / Modification d'un Appender
    Bonjour,

    c'est sûrement une question bête mais je tourne en rond depuis ce matin ...

    J'ai un fichier log4j.properties dans le jar de mon appli :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    log4j.appender.A1.layout=org.apache.log4j.PatternLayout
    log4j.appender.A1.Append=False
    log4j.appender.A1.File=tracePM+.txt
    log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender
    log4j.appender.A1.layout.ConversionPattern=[%p]  %m\n
    log4j.appender.A1.DatePattern='.'yyyy-MM-dd
    log4j.category.com.thales.pmv.ext=DEBUG,A1

    L'appli reçoit en paramètre un chemin vers un fichier de config de l'appli. Je récupère, entre autre, le chemin à utiliser pour le fichier de log. Je souhaite donc mettre à jour la configuration du Logger. J'avais commencé par betement modifier et recharger le fichier properties. Helas, il est impossible de modifier le fichier dans le jar. Et de toute manière c'est pas vraiment ce que je veux.


    J'ai une classe principale qui initialise le Logger (static) par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    log = Logger.getLogger(this.getClass().getName()+".PMCommon");
    Je lis ensuite mon fichier de conf de l'apli et recupère le chemin à utiliser pour le log. J'appelle donc ma méthode updateLogger sensée mettre à jour la configuration du Logger. Hélas c'est ici le pb ...

    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
    private void updateLogger() {
     
                    // j'ai essayé ça pour voir mais ça ne change rien
    		// PropertyConfigurator.configure("/log4j.properties");
     
    		Enumeration enumeration =log.getAllAppenders();
     
                    if(enumeration.hasMoreElements()){
     
    			// je n'arrive jamais ici !!!!
     
    			FileAppender monAppender = (FileAppender)enumeration.nextElement();
    			String fileName = monAppender.getFile();
    			cheminLog = (cheminLog == null) ? fileName : cheminLog+"\\"+fileName;
     
    			monAppender.setFile(cheminLog);
    		}
    }
    Est ce que je fais n'importe quoi ?

    Je comprends pas, je n'arrive pas à récupérer les Appenders ...

    Une idée serait la bienvenue ... merci d'avance

    [EDIT] En fait je pensais à un autre truc ... est-il possible (enfin j'arrive pas à trouver exactement comment) de définir mon chemin comme une propriété système et d'utiliser cette propriété dans le fichier properties ...

  2. #2
    in
    in est déconnecté
    Membre Expert Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Par défaut [log4j]Modification "dynamique" du chemin pour le fichier de log
    Bon en fait mon idée dans le EDIT fonctionne.

    Au cas où ça serve :

    dans mon fichier log4j.properties :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    log4j.appender.A1.File=${pathToLog}\\tracePM+.txt
    Ensuite quand je lis mon fichier de conf, je mets à jour la variable système pathToLog ... et je n'initilise mon logger qu'après. Ca marche nickel, pas besoin de se casser la tête ...

    [EDIT] je ne sais pas si changer le titre va aider pour la recherche mais bon ...

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2003
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 71
    Par défaut
    Attendez, moi je ne comprends pas trop ... comment faire pour que le fichier de propriétés prenne en compte la variable système "pathToLog" ?

    Par exemple, moi je cherche justement à configurer "dynamiquement" l'emplacement du fichier de LOG :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    InputStream is = LoggerAAAmBusiness.class/*this.getClass()*/.getResourceAsStream(m_strLog4JProperties);
    Properties properties = new Properties();
    properties.load(is);
    PropertyConfigurator.configure(properties);
    Je suis obligé de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    InputStream is = LoggerAAAmBusiness.class/*this.getClass()*/.getResourceAsStream(m_strLog4JProperties);
    Properties properties = new Properties();
    properties.load(is);
     
    // (1) parser tous les objets du "properties" 
    // (2) si une des clés finit par "file" -> c'est un fichier 
    //    je rajoute comme préfixe à la valeur (=nom du fichier de log)
    //    l'emplacement (repertoire), que je crée si celui ci n'existe pas
     
    PropertyConfigurator.configure(properties);

  4. #4
    in
    in est déconnecté
    Membre Expert Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Par défaut Définir dynamiquement le chemin vers les logs
    Citation Envoyé par Péchereau Voir le message
    comment faire pour que le fichier de propriétés prenne en compte la variable système "pathToLog" ?
    en fait dans le code Java qui précède l'initialisation de mon Logger je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    String cheminLog = "un fichier ..."
    System.setProperty("pathToLog", cheminLog);
    et au moment où le logger lit sa configuration, la variable est bien initialisée et la valeur est prise en compte ...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 26/08/2010, 13h25
  2. [SQL] Récupération et modification données formulaire
    Par nitteN dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 19/08/2007, 12h14
  3. Récupération en échec après modification du code HQL
    Par Alexandre T dans le forum Hibernate
    Réponses: 2
    Dernier message: 10/07/2007, 22h52
  4. Récupération CEdit après modification
    Par thom069 dans le forum MFC
    Réponses: 3
    Dernier message: 07/07/2006, 09h38
  5. Récupération de données dans une popup de modification
    Par Sandara dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 14/06/2006, 16h03

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