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] uniquement "mes" logs


Sujet :

Logging Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Août 2003
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2003
    Messages : 131
    Points : 82
    Points
    82
    Par défaut [log4j] uniquement "mes" logs
    Bonjour,

    Je lis les tutoriaux sur log4j et j'ai un soucis.

    Si je constitue mon log4j.properties avec la fonction Logger, j'obtiens exactement ce que je veux dans ma console, c'est-à-dire uniquement les logs que je crée dans mon code (et non ceux qui viennent des librairies associées).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Logger log = Logger.getLogger("org.progx");
    PatternLayout layout = new PatternLayout("%d %-5p %c - %F:%L - %m%n");
    ConsoleAppender stdout = new ConsoleAppender(layout);
    log.addAppender(stdout);
    Si je change ma configuration pour ne plus utiliser la console mais le fichier, le fichier affichage.log ne se crée pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Logger log1 = Logger.getLogger("org.progx");
    PatternLayout layout = new PatternLayout("%d %-5p %c - %F:%L - %m%n");
    log1.addAppender(new FileAppender( layout, "affichage.log"));
    si j'utilise la classe log4j au lieu de Logger

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    log4j.logger.org.progx=INFO,fichier
    log4j.appender.fichier=org.apache.log4j.FileAppender
    log4j.appender.fichier.File=affichage.log
    log4j.appender.fichier.layout=org.apache.log4j.PatternLayout
    log4j.appender.fichier.layout.ConversionPattern=%d %-5p %c - %F:%-4L - %m%n
    Là j'ai bien mon fichier qui s'affiche mais mes logs sont noyés dans une quantité astronomique de logs qui ne m'intéresse pas (à la rigueur, je ferai bien un appender supplémentaire que pour ceux là)

    Pourquoi mon fichier dans le cas numéro 2 ne se crée pas. Que manque-t-il donc à ma configuration ? Je vous remercie.

    PS : je me suis basée sur ce tutorial http://gfx.developpez.com/tutoriel/java/log4j/

  2. #2
    Membre expérimenté Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Points : 1 371
    Points
    1 371
    Par défaut
    log4j.appender.file=org.apache.log4j.RollingFileAppender
    log4j.appender.file.File=/ton_fichier_de_log.log
    log4j.appender.file.layout=org.apache.log4j.PatternLayout

    etc.......

    A mon avis ton fichier se crée le probleme c'est que tu ne lui definit pas de chemin precis donc il te le crée surement mais ou, la est la question....

    Appel le avec nom bien spécifique et fait une recherche sur ton disque dur à mon avis tu va le trouver.

    Ou bien met lui un chemin en dur pour exclaircir ton problème ==>>

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Logger log1 = Logger.getLogger("org.progx");
    PatternLayout layout = new PatternLayout("%d %-5p %c - %F:%L - %m%n");
    log1.addAppender(new FileAppender( layout, "C:\\affichage.log"));

    Pourquoi une fois tu parles en java et une autre fois en fichier properties? Pourquoi ne pas faire tout dans le fichier de properties?

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Août 2003
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2003
    Messages : 131
    Points : 82
    Points
    82
    Par défaut
    J'avais commencé en fichier properties, mais comme je n'obtenais pas ce que je voulais, j'ai vu qu'en java on pouvait se concentrer uniquement sur le programme. Alors, c'est ce que je voulais....

    alors si je fais comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Logger log1 = Logger.getLogger("org.progx");
    PatternLayout layout = new PatternLayout("%d %-5p %c - %F:%L - %m%n");
    log1.addAppender(new FileAppender( layout, "/home/chezmoi/log/affichage.log"));
    mon fichier ne se crée pas et j'ai un message d'erreur

    log4j:WARN No appenders could be found for logger (org.apache.catalina.startup.TldConfig).
    log4j:WARN Please initialize the log4j system properly.
    si je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    log4j.logger.org=INFO,file
    log4j.appender.file=org.apache.log4j.RollingFileAppender
    log4j.appender.file.File=/home/chezmoi/log/affichage.log
    log4j.appender.file.layout=org.apache.log4j.PatternLayout
    log4j.appender.fichier.layout=org.apache.log4j.PatternLayout
    log4j.appender.fichier.layout.ConversionPattern=%d %-5p %c - %F:%-4L - %m%n
    le fichier se crée, mais il n'y a plus rien dedans ! Or je suis sure qu'il y a des bugs dedans !

    et j'ai un message d'erreur

    log4j:WARN No appenders could be found for logger (unige.ntice.bdd.BddManager).
    log4j:WARN Please initialize the log4j system properly.
    alors que dans mon fichier BddManager, j'ai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    private static Logger	log	= Logger.getLogger( BddManager.class );
    logique, il faut que je trouve une autre classe ! Arggghhh ! Je vais trouver !

    En tout cas, merci de ton aide.

  4. #4
    Membre expérimenté Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Points : 1 371
    Points
    1 371
    Par défaut
    Par exemple, essaye de mettre ceci dans ton properties :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    log4j.logger.monLoggerPerso=DEBUG,monFile
    log4j.appender.monFile=org.apache.log4j.RollingFileAppender
    log4j.appender.monFile.File=/home/chezmoi/log/affichage.log
    log4j.appender.monFile.layout=org.apache.log4j.PatternLayout
    log4j.appender.monFile.layout.ConversionPattern=%d %-5p %c - %F:%-4L - %m%n
    Et dans ta classe tu recupere le logger en faisant ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private static Logger log = Logger.getLogger("monLoggerPerso");
    Puis ensuite tu logs normalement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Log.debug("test de message debug");
    Voilà si ca ca marche c'est deja un bon point, parce que ca doit marcher!!

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Août 2003
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2003
    Messages : 131
    Points : 82
    Points
    82
    Par défaut
    Merci Max,

    Je ne vais pas tester ta solution parce que je viens tout juste d'en trouver une qui fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    log4j.rootCategory=INFO, R
    log4j.appender.R=org.apache.log4j.RollingFileAppender
    log4j.appender.R.File=/home/chezmoi/log/affichage.log
    log4j.appender.R.Encoding=UTF-8
    log4j.appender.R.MaxFileSize=3000KB
    log4j.appender.R.MaxBackupIndex=10
    log4j.appender.R.layout=org.apache.log4j.PatternLayout
    log4j.appender.R.layout.ConversionPattern=%5p [%t] %c{2}.[%x] %d{MMM/dd HH:mm:ss} - %m%n
    avec dans mes classes l'utilisation de l'API common-logging

    Je suis contente que ça fonctionne, même si je n'ai pas bien compris pourquoi. Les nuances d'une fois à l'autre ne sont quand même pas énormes.

    En tout cas, je te remercie pour ton aide. C'est très sympa.

  6. #6
    Membre expérimenté Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Points : 1 371
    Points
    1 371
    Par défaut
    Dans mon exemple quand tu defini un logger tu peux l'appeler comme je te l'ai marquer par son nom.

    Hors toi tu prenais le class de la class ou tu te trouvé donc il cherche un logger aevc le nom du package de cette classe, s'il ne trouve pas il descend d'un niveau jusqu' a arriver à rootLogger. Si aucun n'est defini alors ton log disparait tout simplement.

    Log4j est très bien pensé mais lorsque l'on ne connait qu'une infime parti il est vrai très dur de comprendre quelque chose. Le manuel sur Log4j est pas mal malgrès qu'il soit payant, c'est la un grand defaut!!

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 30/12/2010, 17h02
  2. [log4j] Afficher uniquement certains niveaux de logs
    Par azad_892000 dans le forum Logging
    Réponses: 1
    Dernier message: 18/02/2009, 12h37

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