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] Séparer les niveaux dans différents fichiers .properties


Sujet :

Logging Java

  1. #1
    Membre habitué
    Homme Profil pro
    Développeur Java
    Inscrit en
    Septembre 2016
    Messages
    46
    Points
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2016
    Messages : 46
    Points : 144
    Par défaut [Log4j] Séparer les niveaux dans différents fichiers .properties
    Bonjour à toutes et à tous,

    Pour les besoins d'un projet je dois mettre en place des logs sur mon application.

    C'est une application j2e, et j'utilise tomcat7.

    Pour cela j'utilise l'api Log4j.

    J'arrive à log différentes choses sans problème.

    Mon soucis c'est que je voudrais organiser mes logs par niveaux exemple :

    Les logs niveau DEBUG dans un fichier debug.log (par exemple)

    Les logs niveau INFO dans un fichier info.log

    etc pour quasiment tous les niveaux.



    je vous mets mon fichier .properties j'ai fait une tentative mais c'est pas concluant tous va dans le même 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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    log4j.rootLogger=INFO, stdout, file
     
    # Redirect log messages to console
    log4j.appender.stdout=org.apache.log4j.ConsoleAppender
    log4j.appender.stdout.Target=System.out
    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
    log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
     
    # Redirect log messages to a log file.
    log4j.appender.file=org.apache.log4j.RollingFileAppender
    log4j.appender.file.Threshold=INFO
    log4j.appender.file.File=C:\\log4j-application.log
    log4j.appender.file.MaxFileSize=5MB
    log4j.appender.file.MaxBackupIndex=10
    log4j.appender.file.layout=org.apache.log4j.PatternLayout
    log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
     
     
    # test dun 2eme logger
     
    log4j.Logger.log=DEBUG, outTest, fichier
     
    # console
    log4j.appender.outTest=org.apache.log4j.ConsoleAppender
    log4j.appender.outTest.Target=System.out
    log4j.appender.outTest.layout=org.apache.log4j.PatternLayout
    log4j.appender.outTest.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
     
    #autre fichier
    log4j.appender.fichier=org.apache.log4j.RollingFileAppender
    log4j.appender.fichier.File=C:\\log4j-info.log
    log4j.appender.fichier.MaxFileSize=5MB
    log4j.appender.fichier.MaxBackupIndex=10
    log4j.appender.fichier.layout=org.apache.log4j.PatternLayout
    log4j.appender.fichier.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
    Merci pour votre aide

  2. #2
    Membre habitué Avatar de bygui
    Homme Profil pro
    PLM/ALM
    Inscrit en
    Avril 2006
    Messages
    133
    Points
    185
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : PLM/ALM
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 133
    Points : 185
    Par défaut
    Bonjour Jaythor,

    Le problème semble venir de la définition de tes appenders.
    Il faut que tu redéfinisses un appender pour chaque niveau et que tu les appelles dans ta classe:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    log4j.logger.<mon_composant>=<level [info, debug,...]>, <nom>
    Ensuite la définition devrait être de ce genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    log4j.appender.<nom>=org.apache.log4j.DailyRollingFileAppender
    log4j.appender.<nom>.File=<mon log>.log
    log4j.appender.<nom>.DatePattern='.'yyyy-MM-dd
    log4j.appender.<nom>.layout=org.apache.log4j.PatternLayout
    Cela donnerait un truc du genre:
    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
    # 
    log4j.rootLogger=ERROR, appenderDebug, appenderError
     
    log4j.Logger.<mespackages.maclasse>=DEBUG, appenderDebug
    log4j.Logger.<mespackages.maclasse>=ERROR, appenderError
     
    log4j.appender.appenderDebug=org.apache.log4j.DailyRollingFileAppender
    log4j.appender.appenderDebug.File=<logFile>.log
    log4j.appender.appenderDebug.DatePattern='.'yyyy-MM-dd
    log4j.appender.appenderDebug.layout=org.apache.log4j.PatternLayout 
     
    log4j.appender.appenderError=org.apache.log4j.DailyRollingFileAppender
    log4j.appender.appenderError.File=<logFile>.log
    log4j.appender.appenderError.DatePattern='.'yyyy-MM-dd
    log4j.appender.appenderError.layout=org.apache.log4j.PatternLayout
    Le problème est que log4j fonctionne par niveau. Si tu actives INFO, tout les niveaux supérieurs seront actifs, ce qui inclus DEBUG et ERROR.
    Ton fichier ne contiendras donc pas seulement les messages de type INFO mais bien tous les messages.
    Je crois que ce n'est pas ce que tu veux.

    Il ne te reste donc plus qu'a coder ton propre logger, car il me semble que ce soit la solution la plus simple dans ton cas.

  3. #3
    Membre habitué
    Homme Profil pro
    Développeur Java
    Inscrit en
    Septembre 2016
    Messages
    46
    Points
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2016
    Messages : 46
    Points : 144
    Par défaut
    ok merci je vais voir ce que je peux faire

  4. #4
    Membre habitué Avatar de bygui
    Homme Profil pro
    PLM/ALM
    Inscrit en
    Avril 2006
    Messages
    133
    Points
    185
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : PLM/ALM
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 133
    Points : 185
    Par défaut
    Pense à indiquer le et à mettre ta solution si la mienne n'est pas assez complète

  5. #5
    Membre habitué
    Homme Profil pro
    Développeur Java
    Inscrit en
    Septembre 2016
    Messages
    46
    Points
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2016
    Messages : 46
    Points : 144
    Par défaut
    D'accord dès que je trouve une solution convenable

  6. #6
    Membre habitué
    Homme Profil pro
    Développeur Java
    Inscrit en
    Septembre 2016
    Messages
    46
    Points
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2016
    Messages : 46
    Points : 144
    Par défaut
    Petite précision quand même (Corrige moi si je me trompe) je crois que le level INFO est supérieur au level DEBUG non ?

  7. #7
    Membre habitué Avatar de bygui
    Homme Profil pro
    PLM/ALM
    Inscrit en
    Avril 2006
    Messages
    133
    Points
    185
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : PLM/ALM
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 133
    Points : 185
    Par défaut
    En effet:
    DEBUG > INFO > WARN > ERROR > FATAL

  8. #8
    Membre habitué
    Homme Profil pro
    Développeur Java
    Inscrit en
    Septembre 2016
    Messages
    46
    Points
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2016
    Messages : 46
    Points : 144
    Par défaut Solution trouvé ;)
    Bon grâce à l'aide de bygui j'y suis arrivé.

    voici ce que j'ai et qui fonctionne pour moi :

    Mon code log4j.properties

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
     
    # root logger
    log4j.rootLogger=TRACE, appenderTrace, appenderDebug, appenderInfo, appenderWarn, appenderError
     
    log4j.Logger.MonPackage.MaClasse=Trace, appenderTrace
    log4j.Logger.UnAutrePackage.UneAutreClasse=DEBUG, appenderDebug
    log4j.logger.UnAutrePackage.UneAutreClasse=DEBUG, appenderDebug
    log4j.Logger.UnAutrePackage.UneAutreClasse=INFO, appenderInfo
    log4j.Logger.UnAutrePackage.UneAutreClasse=WARN, appenderWarn
    log4j.Logger.UnAutrePackage.UneAutreClasse=ERROR, appenderError
     
    log4j.appender.appenderTrace=org.apache.log4j.DailyRollingFileAppender
    log4j.appender.appenderTrace.File=C:\\login-access.log
    log4j.appender.appenderTrace.DatePattern='.'yyyy-MM-dd
    log4j.appender.appenderTrace.layout=org.apache.log4j.PatternLayout
    log4j.appender.appenderTrace.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} - %m%n
    log4j.appender.appenderTrace.filter.a=org.apache.log4j.varia.LevelRangeFilter
    log4j.appender.appenderTrace.filter.a.LevelMin=TRACE
    log4j.appender.appenderTrace.filter.a.LevelMax=TRACE
    log4j.appender.appenderTrace.Threshold=TRACE
     
    log4j.appender.appenderDebug=org.apache.log4j.DailyRollingFileAppender
    log4j.appender.appenderDebug.File=C:\\send-params.log
    log4j.appender.appenderDebug.DatePattern='.'yyyy-MM-dd
    log4j.appender.appenderDebug.layout=org.apache.log4j.PatternLayout
    log4j.appender.appenderDebug.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} - %m%n
    log4j.appender.appenderDebug.filter.b=org.apache.log4j.varia.LevelRangeFilter
    log4j.appender.appenderDebug.filter.b.LevelMin=DEBUG
    log4j.appender.appenderDebug.filter.b.LevelMax=DEBUG
    log4j.appender.appenderDebug.Threshold=DEBUG
     
    log4j.appender.appenderInfo=org.apache.log4j.DailyRollingFileAppender
    log4j.appender.appenderInfo.File=C:\\doc-access.log
    log4j.appender.appenderInfo.DatePattern='.'yyyy-MM-dd
    log4j.appender.appenderInfo.layout=org.apache.log4j.PatternLayout
    log4j.appender.appenderInfo.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} - %m%n
    log4j.appender.appenderInfo.filter.c=org.apache.log4j.varia.LevelRangeFilter
    log4j.appender.appenderInfo.filter.c.LevelMin=INFO
    log4j.appender.appenderInfo.filter.c.LevelMax=INFO
    log4j.appender.appenderInfo.Threshold=INFO
     
    log4j.appender.appenderWarn=org.apache.log4j.DailyRollingFileAppender
    log4j.appender.appenderWarn.File=C:\\upload.log
    log4j.appender.appenderWarn.DatePattern='.'yyyy-MM-dd
    log4j.appender.appenderWarn.layout=org.apache.log4j.PatternLayout
    log4j.appender.appenderWarn.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} - %m%n
    log4j.appender.appenderWarn.filter.d=org.apache.log4j.varia.LevelRangeFilter
    log4j.appender.appenderWarn.filter.d.LevelMin=WARN
    log4j.appender.appenderWarn.filter.d.LevelMax=WARN
    log4j.appender.appenderWarn.Threshold=WARN
     
    log4j.appender.appenderError=org.apache.log4j.DailyRollingFileAppender
    log4j.appender.appenderError.File=C:\\failed-reading.log
    log4j.appender.appenderError.DatePattern='.'yyyy-MM-dd
    log4j.appender.appenderError.layout=org.apache.log4j.PatternLayout
    log4j.appender.appenderError.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} - %m%n
    log4j.appender.appenderError.filter.e=org.apache.log4j.varia.LevelRangeFilter
    log4j.appender.appenderError.filter.e.LevelMin=ERROR
    log4j.appender.appenderError.filter.e.LevelMax=ERROR
    log4j.appender.appenderError.Threshold=ERROR
    en gros j'ai fait un appender par niveau d'erreur que je souhaite logger, puis j'applique un filtre pour les autres niveaux n'apparaissent pas dans tous les fichiers.

    le DailyRollingFileAppender permet d'archiver les logs tous les jours.

    puis coté java :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    // A mettre au début de la classe 
    final static Logger logger = Logger.getLogger(MaClasse.class);
     
    //puis là ou je veux logger quelque chose
    logger.LeNiveauDuLog(MessageALogger);
    Voilà merci de votre aide

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 13/10/2010, 16h08
  2. Réponses: 0
    Dernier message: 01/06/2010, 14h41
  3. [Log4j] Problème d'écriture dans des fichiers différents
    Par pathfinder06 dans le forum Logging
    Réponses: 5
    Dernier message: 14/04/2008, 12h12
  4. Placer les requetes dans des fichiers properties
    Par rach375 dans le forum JDBC
    Réponses: 5
    Dernier message: 11/07/2006, 16h04
  5. Réponses: 4
    Dernier message: 10/02/2005, 17h10

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