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 :

Tomcat and log4j


Sujet :

Logging Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 69
    Par défaut Tomcat and log4j
    Bonjour,

    J’ai développez un projet web qui utilise deux autre projet DB et CORE tous les deux des jars.
    Dans les deux projets db et core j'utilise log4j pour la journalisation des erreurs.
    Mon problème c'est que quand je lance mon site web il y a qu'un seule fichier de log qui est crée (le fichier de log du site web) mais les deux fichiers de log db.log et core.log ne sont pas crée.

    Remarque
    Ces fichiers son bien crée quand je teste chaque projet a par.

  2. #2
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 33
    Par défaut
    Lorsque log4j s'initialise, il ne lit qu'un seul fichier de configuration (log4j.xml ou log4j.properties). Si j'ai bien compris ce qui se passe, quand tu lances ton application web, il prend en compte le fichier de conf qui se trouve dans le classpath de ton application web, ignorant les fichiers de conf qui se trouvent dans tes jars DB et CORE.

    si ton besoin est de générer les 3 fichiers de logs (web.log, db.log et core.log), il faut que créer 3 fileAppenders dans lesquels tu vas rediriger tes logs qu'il convient.

    Grossomodo, ça pourrait donner ça

    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
     
    ###############################
    # log4j.properties du projet WEB
    ###############################
     
     
    ######
    # Définition des Appenders
    ######
     
    # Fichier de log de l'application web, avec rotation des fichiers 
    # (5 fichiers de 1 Mo max chacun)
    #
    log4j.appender.web=org.apache.log4j.RollingFileAppender
    log4j.appender.web.File=web.log
    log4j.appender.web.MaxFileSize=1024KB
    log4j.appender.web.MaxBackupIndex=5
     
    # Fichier de log pour le core, avec rotation des fichiers 
    # (5 fichiers de 1 Mo max chacun)
    #
    log4j.appender.core=org.apache.log4j.RollingFileAppender
    log4j.appender.core.File=core.log
    log4j.appender.core.MaxFileSize=1024KB
    log4j.appender.core.MaxBackupIndex=5
     
    # Fichier de log pour le core, avec rotation des fichiers 
    # (5 fichiers de 1 Mo max chacun)
    #
    log4j.appender.db=org.apache.log4j.RollingFileAppender
    log4j.appender.db.File=core.log
    log4j.appender.db.MaxFileSize=1024KB
    log4j.appender.db.MaxBackupIndex=5
     
    ######
    # Et maitenant, tu définis ici les appenders à utiliser pour chaque
    # type de logs
    ######
     
    # Par défaut, tout les logs vont dans l'appender 'web'
    log4j.rootLogger= INFO, web
     
    # Les logs du CORE vont dans l'appender 'core'
    log4j.logger.com.societe.projet.core = INFO, core
     
    # Les logs du DB vont dans l'appender 'db'
    log4j.logger.com.societe.projet.db= INFO, db

  3. #3
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 69
    Par défaut
    merci,
    Les fichier db.log et core.log qui sont dans les jars comment faire pour les redérigés.

    est ce qu'il faut les re crée dans le projet web.

  4. #4
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 33
    Par défaut
    Les fichier db.log et core.log qui sont dans les jars comment faire pour les redérigés.
    Comment réutiliser les fichiers de conf log4j que tu as dans tes jars, c'est ça ?

    La réponse est: ba non tu peux pas

    Et c'est un peu normal. Les jars sont, dans ton cas, des librairies. Le fichier de conf log4j sert à déterminer comment les logs doivent être traités. Est-ce qu'on les affiche dans la console, dans des fichiers ou dans une base ? quelles sont les niveaux de logs à afficher ? error, info, debug ? si on les mets dans des fichiers, où doit être placé le fichier ? etc ....

    Ce n'est pas à tes composants (jars) d'imposer comment doivent être traité tes logs. Cette responsabilité incombe à l'application, à savoir ton application web.

    Donc pour répondre à ta question, oui, il faut que tu redéfinisses dans ton application web tous les fichiers de logs que tu souhaites générés (comme l'exemple donné ci-dessus)

    Voilà

  5. #5
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 33
    Par défaut
    Ce n'est pas à tes composants (jars) d'imposer comment doivent être traité tes logs. Cette responsabilité incombe à l'application, à savoir ton application web.
    A la rigueur, j'ai presque envie de dire que ça devrait être carrément la responsabilité du serveur d'application

  6. #6
    Membre émérite Avatar de Lorantus
    Homme Profil pro
    Consultant développeur indépendant / Java/VB/C(++)/ObjectPal
    Inscrit en
    Août 2007
    Messages
    599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant développeur indépendant / Java/VB/C(++)/ObjectPal

    Informations forums :
    Inscription : Août 2007
    Messages : 599
    Par défaut
    Oui, lire Log4J.properties est le comportement facile, et c'est le comportement par défaut. C'est le probléme du 'par défaut', car il répond pas aux cas particuliers... Et là, c'est un cas particulier.

    Il y a une solution. Elle demande un peut d'imagination, et non une recette magique: utiliser une classe Propoerties et charger le fichier .properties (ou autre) qui se trouve dans le .jar du projet, en tand que ressource en static.

    Cela donne une grosso-modo le code qui suit (solution facile car dans le constructeur):
    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
     
    public class Project {
        static Logger log=Logger.getLogger(Project.class);
        static String LOG_PROPERTIES_FILE="log4j.properties";
     
        /**
         * Creates a new instance of Project
         */
        public void Project() throws Exception {
            Properties props=new Properties();
            props.load(Project.class.getResourceAsStream(LOG_PROPERTIES_FILE));
            PropertyConfigurator.configure(props);
            props=null;
     
            log.info("Lancement.");
     
            //[...]
     
            log.info("Traitement terminé.");
        }
    }
    Il faut bien sur placer cela dans chaque projet. Et les logs sont configurés différements. Après, il peut étendre en faisant un constructeur qui accepte les properties (etc).

Discussions similaires

  1. Logging Tomcat et Log4J
    Par Zaikay dans le forum Tomcat et TomEE
    Réponses: 1
    Dernier message: 07/06/2012, 10h44
  2. Tomcat et log4j
    Par ybebert dans le forum Tomcat et TomEE
    Réponses: 1
    Dernier message: 15/10/2009, 10h08
  3. Tomcat et log4j
    Par AlienQueen dans le forum Tomcat et TomEE
    Réponses: 4
    Dernier message: 25/10/2007, 17h00
  4. [log4j] Tomcat
    Par pino dans le forum Logging
    Réponses: 2
    Dernier message: 29/06/2004, 14h00
  5. [Tomcat 5.0][Log4j] Il devient fou !!!
    Par yolepro dans le forum Tomcat et TomEE
    Réponses: 9
    Dernier message: 24/04/2004, 21h08

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