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 :

redirection sortie log4j dans textarea


Sujet :

Logging Java

  1. #1
    Membre éprouvé
    Inscrit en
    Juin 2009
    Messages
    138
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Juin 2009
    Messages : 138
    Par défaut redirection sortie log4j dans textarea
    Bonjour,

    je souhaiterais faire en sorte que les logs de log4j apparaisse dans un JTextArea de mon interface graphique, et non dans la console.
    J'ai vu qu'une redirection de sortie pouvait se faire via les méthodes setErr() et setOut() de la classe Système, mais bon, si je veux différencier ma sortie standard de celle de log4j, ça pose problème.

    Quelqu'un pourrait-il m'aider sur une solution valable svp ?

    Merci d'avance

  2. #2
    Membre Expert
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Par défaut
    Bonjour, même si je trouve l'utilisation du static moyenne, j'utilise la classe et la configuration ci-dessous. (n'oublie pas le nom du package dans la configuration)
    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
    import javax.swing.JTextArea;
    import javax.swing.SwingUtilities;
     
    import org.apache.log4j.WriterAppender;
    import org.apache.log4j.spi.LoggingEvent;
     
    public class TextAreaAppender extends WriterAppender {
     
        private static JTextArea jTextArea;
     
        /** Set the target JTextArea for the logging information to appear. */
        public static void setTextArea(JTextArea jTextArea) {
            TextAreaAppender.jTextArea = jTextArea;
        }
     
        /**
         * Format and then append the loggingEvent to the stored
         * JTextArea.
         */
        @Override
        public void append(LoggingEvent loggingEvent) {
            final String message = this.layout.format(loggingEvent);
     
            // Append formatted message to textarea using the Swing Thread.
            SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                    jTextArea.append(message);
                }
            });
        }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
         <appender name="SWING" class="tonPackage.TextAreaAppender">
             <param name="Threshold" value="DEBUG"/>
     
             <layout class="org.apache.log4j.PatternLayout">
                 <!-- The default pattern: Date Priority [Category] Message\n -->
                 <param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c{1}] %m%n"/>
             </layout>
         </appender>
         <root>
             <!-- <priority value="ERROR"/> -->
             <appender-ref ref="SWING"/>
         </root>

  3. #3
    Membre éprouvé
    Inscrit en
    Juin 2009
    Messages
    138
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Juin 2009
    Messages : 138
    Par défaut
    Merci Cheryben pour ton aide.
    Cependant, j'avais trouvé cette classe moi aussi, et je ne suis pas parvenu à l'utiliser correctement, d'où mon post aujourd'hui.
    J'avais moi aussi tilté sur l'utilisation statique dont je ne vois pas l'utilité.

    Mon problème sur l'utilisation de cette classe dépendait sûrement de mon fichier de conf log4j que je n'avais pas changé...
    Par contre, je ne suis pas sûr d'avoir compris la méthode append()... j'ai peur de dire une grosse c*nn*rie, mais elle est appelée automatiquement ?

    En tout cas merci, je testerai ça ce soir

  4. #4
    Membre Expert
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Par défaut
    C'est grâce au fichier de configuration que log4j sait quelle classe instancier pour écrire les logs.
    Cette classe étend WriterAppender qui appartient à log4, et c'est comme ça que la méthode append() est appelée.

  5. #5
    Membre éprouvé
    Inscrit en
    Juin 2009
    Messages
    138
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Juin 2009
    Messages : 138
    Par défaut
    Ca marche nickel
    Un grand merci à toi.

    Petite question tout de même :
    pourquoi faut-il mettre la balise priority en commentaire ?
    En effet, si elle est prise en compte, aucun message de log4j ne s'affiche...

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    parce que si tu la laisse, seuls les messages log4j de type error seront envoyé aux appenders.

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

Discussions similaires

  1. [Log4J] Sortie console dans fichier log
    Par zaitsev dans le forum Logging
    Réponses: 6
    Dernier message: 20/07/2011, 17h02
  2. Redirection de la sortie trace dans deux destinations différentes
    Par BENMANSOUR dans le forum Windows Forms
    Réponses: 2
    Dernier message: 24/02/2010, 16h58
  3. Redirection de sortie standard dans un script bash
    Par redvivi dans le forum Linux
    Réponses: 4
    Dernier message: 07/09/2008, 21h19
  4. Réponses: 0
    Dernier message: 13/03/2008, 10h10
  5. Réponses: 7
    Dernier message: 23/11/2006, 15h10

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