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

Java Discussion :

Log4j, comment savoir si un appender existe déjà


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    616
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Luxembourg

    Informations forums :
    Inscription : Mars 2007
    Messages : 616
    Par défaut Log4j, comment savoir si un appender existe déjà
    Bonjour,

    J'aimerais définir un Appender de Log4j par défaut:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public static Logger logger = Logger.getLogger(MaClasse.class);
    public static final Logger monLogger = Logger.getLogger("com.xxx.yyy.monPackage");
     
     
    PatternLayout layout = new PatternLayout("%d %-5p %m%n");
    ConsoleAppender consoleAppender = new ConsoleAppender(layout);
    monLogger.addAppender(consoleAppender);
    monLogger.setLevel(Level.DEBUG);
    Le problème est que si je défini un autre appender dans un fichier log4j.properties, l'affichage de logs est en double. Donc j'aimerai trouver une condition du genre, si un appender est déjà défini, ne pas créer mon propre appender. Et c'est là que je bute.

    Si j'appelle la méthode: logger.getAllAppenders() ou monLogger.getAllAppenders() ça me retourne un NullEnumeration. Comme si l'appender n'existait pas, mais pourtant il existe (défini au niveau supérieur).
    J'ai essayé ceci: monLogger.getRootLogger().getAllAppenders().hasMoreElements() ça me retourne effectivement true lorsque dans le fichier log4j.properties je définis un appender au niveau root.
    Mais lorsque je défini un appender au niveau com.xxx.yyy et rien au niveau root, là je suis coincé.

    Encore une fois, je ne veux pas que les logs apparaissent en double et en même temps je veux éviter ce genre de message:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    log4j:WARN No appenders could be found for logger (com.bsb.is.xml2csv.Transformer).
    log4j:WARN Please initialize the log4j system properly
    Serait-il possible de savoir d'avance si à un niveau du package ou supérieur un appender a déjà été défini ou pas

    J'espère que j'étais clair...

  2. #2
    Modérateur
    Avatar de Gugelhupf
    Homme Profil pro
    Analyste Programmeur
    Inscrit en
    Décembre 2011
    Messages
    1 326
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste Programmeur

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 326
    Billets dans le blog
    12
    Par défaut
    Ce que tu fais là c'est ajouter une surcouche. Si tu veux quelques chose de propre, définit tous tes appenders au niveau d'un même fichier log4j.properties (ou la version XML équivalente), n'utilises pas les classes de création d'appender toi-même au niveau du code.

    Maintenant, si tu récupères un gros projet dans lequel tu soupçonnes l'existence d'appender créée à la main, tu peux toujours utiliser les fonctionnalités IDE de recherche "Search".
    N'hésitez pas à consulter la FAQ Java, lire les cours et tutoriels Java, et à poser vos questions sur les forums d'entraide Java

    Ma page Developpez | Mon profil Linkedin | Vous souhaitez me contacter ? Contacter Gokan EKINCI

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    616
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Luxembourg

    Informations forums :
    Inscription : Mars 2007
    Messages : 616
    Par défaut
    C'est un petite interface qui fonctionne avec une grosse application Java, c'est un convertisseur de format de fichier. J'ai ajouté une fonctionnalité d’exécution en mode autonome en ajoutant méthode main().
    Donc, je ne sais pas dans quel contexte mon appli s’exécute.

Discussions similaires

  1. [VB6]Comment savoir si un répertoire existe
    Par pendragon dans le forum VB 6 et antérieur
    Réponses: 13
    Dernier message: 30/09/2016, 06h42
  2. Comment savoir si une URL existe
    Par funzynator dans le forum VB 6 et antérieur
    Réponses: 14
    Dernier message: 07/11/2005, 20h56
  3. comment savoir si une table existe dans la base?
    Par isa21493 dans le forum ASP
    Réponses: 6
    Dernier message: 01/09/2005, 17h09
  4. [javascript] Comment savoir si un div existe
    Par LE NEINDRE dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 22/08/2005, 17h13
  5. [URL] Comment savoir si une URL existe?
    Par jse dans le forum Entrée/Sortie
    Réponses: 5
    Dernier message: 07/10/2004, 15h33

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