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] Sortie console dans fichier log


Sujet :

Logging Java

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2011
    Messages : 43
    Points : 18
    Points
    18
    Par défaut [Log4J] Sortie console dans fichier log
    Bonjour à tous,

    Mon problème est très simple. J'utilise log4j dans mon application pour enregistrer dans un fichier des messages de type INFO principalement. Tout marche nickel sauf que lors de l'intégration à l'application finale, je reçois en partie la sortie console dans ce même fichier :

    19/07/2011 16:38:10 INFO = Named query checking : enabled
    19/07/2011 16:38:10 INFO = building session factory
    19/07/2011 16:38:11 INFO = Not binding factory to JNDI, no JNDI name configured

    Or, je ne veux que mes INFO à moi, ce que je génère grâce à mon code :
    log.getLogger().info("blablabla");

    Quelqu'un sait comment faire pour éviter ca ??

    Merci d'avance.

  2. #2
    Membre éprouvé
    Inscrit en
    Mars 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mars 2006
    Messages : 848
    Points : 1 078
    Points
    1 078
    Par défaut
    Bonjour,

    c'est un problème de configuration. Les packages sont faits pour ça.

    Il faut que tu configures ton logger (appellons-le 'fichierInfo'):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    log4j.category.mon.appli=INFO,fichierInfo
    Comme ça, il ne récupèrera que les logs des classes du package mon.appli et des packages fils.
    Prend soin d'utiliser un logger initialisé correctement pour logger tes messages. La bonne pratique est de le faire avec la classe courante.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2011
    Messages : 43
    Points : 18
    Points
    18
    Par défaut
    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
    #définition du niveau et des Appender du rootLogger
    log4j.rootLogger=Info, monAppender
     
    #configuration de "monAppender" org.apache.log4j.FileAppender
    log4j.appender.monAppender=com.aerp.application.portlet.ApplicationPortlet
     
    #définition du Layout pour "monAppender"
    log4j.appender.monAppender.layout=org.apache.log4j.PatternLayout
     
    log4j.appender.monAppender=org.apache.log4j.DailyRollingFileAppender
    log4j.appender.monAppender.DatePattern='-'MM-yyyy
    log4j.appender.monAppender.File=C:/log/log_livelinkECM
     
    #définition du pattern d affichage pour monAppender
    log4j.appender.monAppender.layout.ConversionPattern=%d{dd/MM/yyyy HH:mm:ss} %-2p = %m%n

    Voila mon fichier de config, j'ai précisé le package (enfin je crois) mais le problème n'est pas résolu.

  4. #4
    Membre éprouvé
    Inscrit en
    Mars 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mars 2006
    Messages : 848
    Points : 1 078
    Points
    1 078
    Par défaut
    C'est normal, tu as laissé ton appender en rootlogger, donc il prend les messages de tous les logger.

    Remplace ta ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    log4j.rootLogger=Info, monAppender
    Par celle que j'ai donnée avant (en adaptant le nom du package) et ça devrait aller mieux.

  5. #5
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Points : 7 083
    Points
    7 083
    Par défaut
    Citation Envoyé par zaitsev Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    #configuration de "monAppender" org.apache.log4j.FileAppender
    log4j.appender.monAppender=com.aerp.application.portlet.ApplicationPortlet
     
    log4j.appender.monAppender=org.apache.log4j.DailyRollingFileAppender
    "monAppender" est définit deux fois et je doute que la classe "com.aerp.application.portlet.ApplicationPortlet" soit un appender
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  6. #6
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2011
    Messages : 43
    Points : 18
    Points
    18
    Par défaut
    J'ai bien lu vos remarques, cependant c'est loin d'être aussi simple que ça.

    Ma classe qui utilise log4j se trouve dans un JAR qui est référencé dans le projet final. Elle a un attribut :

    private LogWebdav logDav = new LogWebdav();

    La classe s'appelle MainWebdav et se trouve dans le package "main" du dossier src (du JAR).

    Voila, j'ai bien essayé ce que vous m'avez montré mais rien n'y fait, pire ca écrit plus dans le fichier, donc à part rootLogger pour l'instant rien ne marche. Je pensais qu'il y aurait juste une propriété à modifier, mais ca a l'air plus complexe...

  7. #7
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Points : 7 083
    Points
    7 083
    Par défaut
    Je pense à un truc comme il y a une portlet dans l'affaire. Est-ce que tu utilises WCI ?
    Car sur une certaine erreur d'initialisation, ce **** de WCI réinitialise la configuration log4j !

    Tu peux faire quelques tests en scrutant par exemple la hiérarchie.
    Si tu peux pas te mettre en debug :
    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
     
    LoggerRepository h = LogManager.getLoggerRepository();
    Logger l= h.getRootLogger();
    Enumeration e = l.getAllAppenders();
    while (e.hasMoreElements()) {
      Appender a = (Appender) e.nextElement();
      System.out.println("root --> " + a.getName() + "(" + a.getClass().getCanonicalName() + ")");
    }
    e = h.getCurrentLoggers();
    while (e.hasMoreElements()) {
      Logger l = (Logger) e.nextElements();
      Enumeration as = e.getAllAppenders();
      while (as.hasMoreElements()) {
        Appender a = (Appender) as.nextElement();
        System.out.println("root --> " + a.getName() + "(" + a.getClass().getCanonicalName() + ")");
      }
    }
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

Discussions similaires

  1. Sauver les sorties consoles dans un fichier log
    Par Balbuzard dans le forum Logging
    Réponses: 4
    Dernier message: 30/03/2009, 00h48
  2. [Log4j]Cherche visualiseur de fichiers logs de log4j
    Par RolandB dans le forum Logging
    Réponses: 9
    Dernier message: 18/03/2009, 15h11
  3. sortie console dans fichier jnlp
    Par pjfly dans le forum Langage
    Réponses: 2
    Dernier message: 28/11/2007, 14h41
  4. Réponses: 3
    Dernier message: 20/10/2006, 16h41
  5. Réponses: 7
    Dernier message: 02/09/2005, 15h15

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