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]Problème de rotation de fichier de log


Sujet :

Logging Java

  1. #1
    Membre à l'essai
    Femme Profil pro
    Développeur Java
    Inscrit en
    Avril 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2011
    Messages : 6
    Par défaut [Log4J]Problème de rotation de fichier de log
    Bonjour,

    J'utilise log4j pour les logs de mon application.
    Je suis dans un contexte professionnel et je ne peux malheureusement pas mettre grand chose sur mon code.

    Néanmoins j'essaye d'identifier d'où pourrai provenir mon problème.

    Pour vous expliquer, mes log remontent bien dans le fichier voulu. La rotation journalière fonctionne... du moins, le fichier du jour se crée bien:

    Exemple:
    Etat de mes fichiers hier:
    - MonFichier.log

    Etat ce matin:
    MonFichier.log
    MonFichier.log.2011-04.06

    Le problème est que lorsque je provoque des remontées de log dans mon appli, ceux-ci vont s'écrire dans le fichier d'hier -_-. Certaines données remontent également dans le fichier du jour. Pour ne rien simplifié j'ai plusieurs cluster sur mon serveur weblo.

    Je ne sais pas si certains d'entre vous on déjà rencontrer ce problème. Pour moi c'est incompréhensible. Plusieurs appli fonctionne avec le même type de config et nous n'avons pas de soucis. Sur cette appli j'ai le problème et malgrès plusieurs changements dans le fichier .properties j'ai troujours le meme soucis.

    Extrai du code:
    log4j.logger.com.maclasse =DEBUG,serverappender

    ##appender
    log4j.appender.serverappender=org.apache.log4j.DailyRollingFileAppender
    log4j.appender.serverappender.File=logs/MonFichier_${weblogic.Name}.log
    log4j.appender.serverappender.DatePattern='.'yyyy-MM-dd
    log4j.appender.serverappender.layout=org.apache.log4j.PatternLayout
    log4j.appender.serverappender.layout.ConversionPattern=%d{ISO8601} [%t] %-6p %c{2} - %m\r\n

    Merci de votre aide

  2. #2
    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 : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Par défaut
    Ca me fait penser à un problème de "move" en Unix...

    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $ (echo 1; mv nouveau.txt ancien.txt; echo 2; echo 3 >> nouveau.txt; echo 4; echo 5 >> nouveau.txt) > nouveau.txt
    T'auras 1 2 et 4 dans ancien.txt et 3 et 5 dans nouveau.txt.

    Concrètement quand tu ouvres un flux sur un descripteur de fichier. Quand tu déplaces un fichier, son descripteur ne change et tu continues d'écrire sur le même descripteur donc le nouvel emplacement.

    Tu n'aurais pas plusieurs Appender sur le même fichier ?
    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

  3. #3
    Membre à l'essai
    Femme Profil pro
    Développeur Java
    Inscrit en
    Avril 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2011
    Messages : 6
    Par défaut
    C'est bien la mon problème.

    Cette application magnifique... (oui je sais la critique est facile ^^), Elle est concu en plusieurs parties. En gros on parlera de Visu, Serveur , Purge et Common.

    Quand on m'a exposer le problème, les log de l'application été divisé en 2. Un fichier pour la purge et un fichier pour le reste.
    Mon suppérieur m'a dit qu'il fallait déparer Visu et Serveur.
    Donc aujourd'hui je produit 3 fichiers = Purge, Visu et Serveur.

    Mon problème est que l'appli a été codé avec les pieds et que certaines classe qui n'ont pas les meme fonction s'appel de la meme manière dans les différents modules !! Bien jouer. (exemple clair: Le fichier de visu d'hier a été écrasé avec les log de purge d'aujourd'hui... car la purge fait appel a une classe de visu...)

    Autre problème la partie common. Comme l'indique son nom elle est utilisé par les différent module de mon application. Et si je les isole elle n'ont plus de sens! J'ai vérifié certaines classes sont utilisés par tous les modules (ce qui est logique)

    Bref, y en a dans tous les sens. Et si j'élimine certaines class de d'un fichier de log, celui ci n'a plus de sens... Et si par malheur je met des class dans le fichier de log serveur qui sont également apellé par visu.. lorsque j'utilise visu, je fligue le fichier de log serveur.

    Pour moi la solution serai de faire un fichier de log global avec tout dedans... mais c'est pas ce qu'on me demande!

  4. #4
    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 : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Par défaut
    Tu devrais avoir (tu me confirmes si c'est le cas ou pas), trois appenders
    1. Un pour "Visu"
    2. Un pour "Serveur"
    3. Un pour "Purge"


    De même tes clusters devraient écrire dans des fichiers (physiques) séparés.
    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

  5. #5
    Membre à l'essai
    Femme Profil pro
    Développeur Java
    Inscrit en
    Avril 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2011
    Messages : 6
    Par défaut
    Oui et j'ai 2 clusters. Ce qui donne au final 6 fichiers. Mais mes clusters ne posent pas problème.

    On a pris la décision de tout mettre dans le meme fichier sur une deusième configu donc je vais voir ce que cela donne à partir de demain

  6. #6
    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 : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Par défaut
    Si tu as bien trois appenders qui pointe sur trois fichiers distincts et que tu n'as pas d'autres process qui pointe sur ces fichiers. Le problème vient alors du DailyRollingFileAppender et ta solution ne changera rien au problème.

    Quelle version de Log4J utilises-tu ?
    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

  7. #7
    Membre à l'essai
    Femme Profil pro
    Développeur Java
    Inscrit en
    Avril 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2011
    Messages : 6
    Par défaut
    Je ne sais pas et je ne sais pas ou trouver l'info (les joies de mes débuts -_- )

    ...edity: ca y est j'ai mis la main dessus: log4j-1.2.11

  8. #8
    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 : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Par défaut
    On peut avoir le fichier de configuration complet ?
    Peux-tu vérifier qu'il n'y a pas de manipulation de la configuration des logger/appender/etc dans le code ?
    Peux-tu t'assurer que les clusters n'utilisent pas les mêmes fichiers ?

    J'essaye de remettre un peu les choses à plat ^_^

    Tu as une application (Une seule JVM, un seul programme Java) exécuté en cluster (lancer plusieurs fois sur une ou plusieurs machines) qui comprend trois modules (Visu, Serveur, Purge) qui sont décomposés en autre composants (Visu, Serveur, Purge, Common) avec des dépendances (Visu -> Serveur -> Common). Tu voudrais trois fichiers de logs par cluster qui correspondent aux activités des trois modules ?
    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

  9. #9
    Membre à l'essai
    Femme Profil pro
    Développeur Java
    Inscrit en
    Avril 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2011
    Messages : 6
    Par défaut
    Pour ce qui est attendu c'est bien ca.

    Je ne peux malheureusement pas te donner le fichier complet... surtout sur un forum consulté par tout le monde.

    Bref, j'ai essayé une chose. Je regarde demain si les log se comporte bien.
    J'ai néanmoins vérifié les points que tu évoque et tout est bon.

    Merci pour ton aide en tout cas. Je te dis ce qu'il en est demain.

  10. #10
    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 : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Par défaut
    C'est sûr qu'un fichier log4j.properties où tu remplaces le nom des classes et des chemins c'est hyper-critique
    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

  11. #11
    Membre à l'essai
    Femme Profil pro
    Développeur Java
    Inscrit en
    Avril 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2011
    Messages : 6
    Par défaut
    Bon ca c'est fais...

    Malgrès le faite que j'ai réuni tous mes log dans un seul fichier le problème s'est effectivement reproduit ce matin dès que j'ai lancer un accès sur la partie visu de l'application.

  12. #12
    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 : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Par défaut
    Sans information complémentaire, impossible d'en faire plus.
    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. [Log4J] Où est créé le fichier de log ?
    Par Klemsy78 dans le forum Logging
    Réponses: 3
    Dernier message: 26/09/2012, 22h02
  2. [Log4j][Applet] Problème lecture du fichier de log
    Par julie4207 dans le forum Logging
    Réponses: 3
    Dernier message: 22/11/2010, 11h29
  3. [log4j] 2 applications et un fichier de log
    Par guille007 dans le forum Logging
    Réponses: 1
    Dernier message: 02/03/2009, 21h14
  4. Problème pour réduire le fichier log d'une base
    Par Oluha dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 22/06/2006, 16h01
  5. Réponses: 9
    Dernier message: 16/05/2006, 15h02

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