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 :

2 applis pour 1 seul fichier log avec log4j


Sujet :

Logging Java

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Avril 2007
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 2
    Points : 1
    Points
    1
    Par défaut 2 applis pour 1 seul fichier log avec log4j
    Bonjour,


    Je travaille depuis récemment avec log4j, configuré en XML et tout se passait bien.
    J'utilisais sans probleme la classe DailyRollingFileAppender pour chaque appli.
    Le jour ou j ai voulu loggé sur le meme fichier avec deux applis, c est la cata...
    (j'ai d abord copié le meme fichier log4j.xml dans les 2 répertoires WEB-INF/classes)
    Le roll-over ne se fait plus et pire encore, le fichier log se réinitialise. Je perdait des logs !!!

    Voici un extrait de la config

    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
     
    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
    <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
     
      <appender name="RootFile" class="org.apache.log4j.DailyRollingFileAppender">
          <param name="File" value="c:/logs/all/All.log"/>
          <param name="Append" value="true"/>
          <param name="DatePattern" value="'.'yyyy-MM-dd"/>
          <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d [%t] %p - %m%n"/>
          </layout>
      </appender>
     
      <logger name="com.XXX.YYY.ZZZ">
        <level value="debug"/> 
        <appender-ref ref="RootFile"/>
      </logger>
     
     
      <root>
      </root>
     
    </log4j:configuration>
    J'ai essayé de mettre un FileAppender simplement dans l'une des applis mais ça ne marche pas non plus, ni avec AsyncAppender...

    D'ou ma question :
    Quelqu'un a-t-il une solution pour logger dans le meme fichier log à partir de 2 applis différents ?

    A++

  2. #2
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Tes 2 applis tournent dans la même JVM ? Si c'est pas le cas, dommage, mais y a pas de solution miracle à ton pb : faut utiliser 2 fichiers bien distincts. Si c'est le cas, essaie de mettre le JAR de log4j à un niveau plus bas du class loader (genre au niveau système) de manière à ce que tes 2 applis utilisent les mêmes instances de logger. Je ne sais pas comment fonctionne log4j avec les threads mais si tu as toujours des pbs d'accès concurrents, faudra que tu écrives une petite classe (static ou singleton) qui centralise les appels aux loggers log4j et qui renvoie toujours les mêmes instances de loggers.

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Avril 2007
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Merci pour ta réponse _Mac_

    Effectivement, mes 2 applis sont dans 2 JVM distincts. J'avais pensé à centraliser les loggers dans une classe mais cela demande une modif du code assez conséquent, ce qui n est pas opportun dans mon cas.

    Je vais donc separer les logs avec des log4j.xml distincts, en attendant d avoir un peu temps pour mutualiser les classes loggers.

    a++

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Août 2009
    Messages : 22
    Points : 20
    Points
    20
    Par défaut
    Bonjour,

    J'ai un souci avec mon log4j et j'ai vu vos discussion ici. Je me permet de vous poser la question :
    Mes applications sont sur une même JVM et je voudrais logger les statistiques de ces applications dans un seul fichier log4J.

    Actuellement il n'y a pas de problème lorsqu'il n'y pas d'exécutions en même temps. Sinon, il n'y a qu'une seule application qui peut logger.

    _Mac_, tu en as parlé d'une classe qui gère la centralisation des appels. Pourrais-tu m'éclairer un peu? Merci en avance.

    Citation Envoyé par _Mac_ Voir le message
    Tes 2 applis tournent dans la même JVM ? Si c'est pas le cas, dommage, mais y a pas de solution miracle à ton pb : faut utiliser 2 fichiers bien distincts. Si c'est le cas, essaie de mettre le JAR de log4j à un niveau plus bas du class loader (genre au niveau système) de manière à ce que tes 2 applis utilisent les mêmes instances de logger. Je ne sais pas comment fonctionne log4j avec les threads mais si tu as toujours des pbs d'accès concurrents, faudra que tu écrives une petite classe (static ou singleton) qui centralise les appels aux loggers log4j et qui renvoie toujours les mêmes instances de loggers.

  5. #5
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Ben c'est comme j'ai dit : tu fais un singleton ou même une classe avec que des méthodes et attributs statiques et voilà. Si ça se trouve, même pas la peine de faire ça car je crois que les méthodes Log4j pour récupérer les loggers sont des méthodes statiques. Teste tout simplement comme ça, sans rien faire, et si ça marche pas, fais toi une classe avec que des statiques.

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  6. #6
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    les loggueur de log4j gèrent la concurrence sans soucis. Par contre il te faut une seul fichier de config log4j dans lequel le fichier destination ne sera référencé que par une seul appender. Si t'as plusieurs appender vers le même fichier, que tu sois dans la meme jvm ou pas n'y change rien, t'aura des accès concurrent à des handles différents sur le même fichier, l'un prendra d'office le pas sur l'autre.

Discussions similaires

  1. Réponses: 4
    Dernier message: 01/01/2010, 20h25
  2. pb pour associé un fichier chm avec un projet MFC
    Par Cédric_07 dans le forum MFC
    Réponses: 9
    Dernier message: 05/12/2006, 15h56
  3. [FPDF] Cherche informations pour afficher un fichier pdf avec PHP
    Par Hans_B dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 22/03/2006, 11h57
  4. problème pour parser un fichier xml avec XML::Simple
    Par black_code dans le forum Modules
    Réponses: 3
    Dernier message: 30/01/2006, 19h32
  5. Grep pour filtrer le fichier log
    Par devdev2003 dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 23/02/2005, 05h48

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