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 :

Message d'erreur à propos de log4j.properties


Sujet :

Logging Java

  1. #1
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    402
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 402
    Points : 337
    Points
    337
    Par défaut Message d'erreur à propos de log4j.properties
    Bonjour,

    J'ai un message d'erreur qui s'affiche sur la console lors de l'exécution de mon programme (plus précisément lors de l'application de la lecture du fichier log4j.properties)

    J'ai ce message d'erreur qui s'affiche :
    log4j:ERROR Could not read configuration file [log4j.properties].
    java.io.FileNotFoundException: log4j.properties (Le fichier spécifié est introuvable)
    at java.io.FileInputStream.open(Native Method)
    at java.io.FileInputStream.<init>(Unknown Source)
    at java.io.FileInputStream.<init>(Unknown Source)
    at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:316)
    at org.apache.log4j.PropertyConfigurator.configure(PropertyConfigurator.java:342)
    at test.MyLog.Logging(MyLog.java:19)
    at test.Graphisme.actionPerformed(Graphisme.java:105)
    at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
    at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
    at java.awt.Component.processMouseEvent(Unknown Source)
    at javax.swing.JComponent.processMouseEvent(Unknown Source)
    at java.awt.Component.processEvent(Unknown Source)
    at java.awt.Container.processEvent(Unknown Source)
    at java.awt.Component.dispatchEventImpl(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Window.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)
    log4j:ERROR Ignoring configuration file [log4j.properties].
    Mais pourtant la console affiche les informations désirées et mon fichier log prend bien les informations aussi.


    J'edite mon post pour vous montrer la configuration de mon fichier log4j.properties :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    #affichage fichier
    log4j.logger.test=INFO,log
    log4j.appender.log=org.apache.log4j.FileAppender
    log4j.appender.log.File=C:/temp/test/log/trace.log
    log4j.appender.log.layout=org.apache.log4j.PatternLayout
    log4j.appender.log.layout.ConversionPattern=%-5p - %m%n
    J'ai retiré l'affichage console car au final je n'en ai pas besoin.


    Je ne comprend pas vraiment ce message d'autant plus qu'il à l'air d'expliquer que le fichier n'est pas trouvé. Pourtant il est bien dans le classpath de mon application.

    Voilà, mon application marche très bien mais je dois la présenter à l'oral pour mon BTS et ça fait tache d'avoir des exceptions dans la console alors si quelqu'un pourrait me dire d'où vient le souci s'il vous plait (si celui-ci est vu)

  2. #2
    Membre éclairé Avatar de Lorantus
    Homme Profil pro
    Consultant développeur indépendant / Java/VB/C(++)/ObjectPal
    Inscrit en
    Août 2007
    Messages
    599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant développeur indépendant / Java/VB/C(++)/ObjectPal

    Informations forums :
    Inscription : Août 2007
    Messages : 599
    Points : 882
    Points
    882
    Par défaut
    Les informations sont bien dans le fichier, mais le fichier n'est pas trouvé par l'API:
    log4j:ERROR Could not read configuration file [log4j.properties].
    java.io.FileNotFoundException: log4j.properties (Le fichier spécifié est introuvable)
    Quelle est la structure -arborésence (fautes)- de tes fichiers ?

  3. #3
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    402
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 402
    Points : 337
    Points
    337
    Par défaut
    Donc je vais essayer d'être le plus précis pour présenter la structure des fichiers :
    -test
    ----test (le package qui regroupe mes classes)
    ----log4j.properties
    ----param.properties

    -JRE System Library

    -Referenced Libraries

    -apache-log4j-1.2.15

    -com

    -META-INF

    -org

    puis quelques jar


    Je précise que ma déclaration pour référencer le fichier log4j est faite telle que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PropertyConfigurator.configure("log4j.properties");
    Voila, merci de m'aider.

  4. #4
    Membre éclairé Avatar de Lorantus
    Homme Profil pro
    Consultant développeur indépendant / Java/VB/C(++)/ObjectPal
    Inscrit en
    Août 2007
    Messages
    599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant développeur indépendant / Java/VB/C(++)/ObjectPal

    Informations forums :
    Inscription : Août 2007
    Messages : 599
    Points : 882
    Points
    882
    Par défaut
    Par défaut, Log4J utilise le fichier "log4J.properties". Dans ton cas, ce fichier doit se trouver dans le répertoire "test", et non au dessus :
    at test.MyLog.Logging(MyLog.java:19)
    Pour info, cela fonctionnera lors des développements. Mais en production, lorsque tu executeras ton application via le .jar, tu risques une erreur. Il te faut lire le log4j.properties dans le .jar, en tand que ressource :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
            Properties logProps=new Properties();
            in=new Main().getClass().getResourceAsStream("log4J.properties");
            logProps.load(in);
            in.close();
            PropertyConfigurator.configure(logProps);

  5. #5
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    402
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 402
    Points : 337
    Points
    337
    Par défaut
    Donc si j'ai bien compris je dois placer mon fichier log4J.properties dans le package test.

    Puis remplacer ces deux lignes de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    PropertyConfigurator.configure("log4j.properties");
    Logger Log = Logger.getLogger(MyLog.class);
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Properties logProps=new Properties();
    in=new Main().getClass().getResourceAsStream("log4J.properties");
    logProps.load(in);
    in.close();
    PropertyConfigurator.configure(logProps);
    Ensuite j'imagine qu'il faut faire de nouveaux import non ?

    Merci de ton aide en tous cas.

  6. #6
    Membre éclairé Avatar de Lorantus
    Homme Profil pro
    Consultant développeur indépendant / Java/VB/C(++)/ObjectPal
    Inscrit en
    Août 2007
    Messages
    599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant développeur indépendant / Java/VB/C(++)/ObjectPal

    Informations forums :
    Inscription : Août 2007
    Messages : 599
    Points : 882
    Points
    882
    Par défaut
    Oui, sauf que le 'main' doit être remplacé par la classe où tu fait ton initalisation des logs: le properties file est une ressource dès quelle est dans le jar.

  7. #7
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    402
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 402
    Points : 337
    Points
    337
    Par défaut
    D'accord merci, seulement des petites erreurs persistent.

    J'ai remplacé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    PropertyConfigurator.configure("log4j.properties");
    Logger Log = Logger.getLogger(MyLog.class);
    par ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Properties logProps=new Properties();
    in = new MyLog().getClass().getResourceAsStream("log4j.properties");
    logProps.load(in);
    in.close();
    PropertyConfigurator.configure(logProps);
    Maintenant mes sont soulignés, j'ai importé le java.util et puis c'est "info" qui est souligné pour me dire
    The method info(String) is undefined for the type Log
    Enfin le "in" correspond à quoi exactement (désolé si je ne saisis pas totalement) car ici "in" cannot be resolved. Donc il faudrait que je le déclare mais je ne vois pas à quoi il correspond :/

    Merci d'avance :]

  8. #8
    Membre éclairé Avatar de Lorantus
    Homme Profil pro
    Consultant développeur indépendant / Java/VB/C(++)/ObjectPal
    Inscrit en
    Août 2007
    Messages
    599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant développeur indépendant / Java/VB/C(++)/ObjectPal

    Informations forums :
    Inscription : Août 2007
    Messages : 599
    Points : 882
    Points
    882
    Par défaut
    L'API getRessourceAsStream te renseigne sur le type de 'in'... InputStream.

    Par contre, l'erreur sur la méthode 'info' est douteuse... comme si elle n'existait pas dans l'objet Log que tu crées. Utilise le bon package ? Pour Log4j, il faut importer org.apache.log4j.Logger:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    import org.apache.log4j.Logger;
    //...
    Logger log=Logger.getLogger(MyLog.class);
    //...
    InputStream in;
    Properties logProps=new Properties();
    in=new Main().getClass().getResourceAsStream("log4j.properties");
    logProps.load(in);
    in.close();
    PropertyConfigurator.configure(logProps); 
     
    log.info("Launch...");

  9. #9
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    402
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 402
    Points : 337
    Points
    337
    Par défaut
    Je me suis débarrassé du problème concernant l'objet Log, j'avais tout simplement mis en commentaire cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Logger Log = Logger.getLogger(MyLog.class);

    Merci pour l'indication sur le type de 'in'.

    Maintenant mon application marche au poil, un grand merci à toi Lorantus

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

Discussions similaires

  1. Message d'erreur à propos du stack
    Par ceugniet dans le forum Débuter
    Réponses: 6
    Dernier message: 27/01/2012, 14h13
  2. [Exchange 2007] Message d'erreur à propos du certificat
    Par agrimault dans le forum Exchange Server
    Réponses: 3
    Dernier message: 16/06/2011, 12h52
  3. Réponses: 3
    Dernier message: 29/05/2008, 17h31
  4. Réponses: 3
    Dernier message: 08/02/2008, 20h02
  5. [LOG4J][PROPERTIES] Erreur pas comprise?
    Par fabszn dans le forum Logging
    Réponses: 5
    Dernier message: 04/01/2006, 18h09

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