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] Rediriger les sorties out et err vers les appenders


Sujet :

Logging Java

  1. #1
    Membre averti Avatar de Rei Angelus
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2006
    Messages
    292
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2006
    Messages : 292
    Points : 356
    Points
    356
    Par défaut [log4j] Rediriger les sorties out et err vers les appenders
    Bonjour,

    J'utilise log4j pour générer les traces d'un programme java. Ce programme en appelle un autre qui génére ses traces via System.err et System.out.

    Comment peut-on dire à log4j de 'récupérer' les messages de System.err et System.out dans ces appenders de manière à fusionner les 2 traces ?

    Merci

  2. #2
    Membre chevronné
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Points : 1 787
    Points
    1 787
    Par défaut
    Je ne pense pas que ce soit faisable ... Je ne vois pas comment log4j pourrait avoir la main sur un System.out ou un System.err ...

  3. #3
    Membre averti Avatar de Rei Angelus
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2006
    Messages
    292
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2006
    Messages : 292
    Points : 356
    Points
    356
    Par défaut
    Actuellement j'utilise System.setErr() et System.setOut() pour les rediriger vers mon fileAppender, mais le résultat n'est pas top. Si log4j pouvait le faire correctement pour moi cela ne serait pas plus mal !

  4. #4
    Membre averti Avatar de Rei Angelus
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2006
    Messages
    292
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2006
    Messages : 292
    Points : 356
    Points
    356
    Par défaut
    J'ai mis en place une solution qui donne de bons résultats :
    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
     
    Logger.getRootLogger().info("DEMARRAGE DE " + Parametrage.NOM_APPLICATION);
     
    /* Redirection de stdout et stderr vers le Logger */
    Thread addLogger = new Thread()
    {
    	public void run()
    	{
    		boolean state = true;
    		ByteArrayOutputStream outStream = new ByteArrayOutputStream();
    		ByteArrayOutputStream errStream = new ByteArrayOutputStream();
     
    		System.setOut(new PrintStream(outStream));
    		System.setErr(new PrintStream(errStream));
     
    		while(state == true)
    		{
    			try
    			{
    				Thread.sleep(1000);
    				if (outStream.size() != 0)
    				{
    					Logger.getRootLogger().info(outStream.toString());
    					outStream.reset();
    				}
    				if (errStream.size() != 0)
    				{
    					Logger.getRootLogger().info(errStream.toString());
    					errStream.reset();
    				}
    			}
    			catch(Exception e)
    			{
    				Logger.getRootLogger().error(e.getMessage());
    			}
    		}
    	}
    };
    addLogger.start();
    Néanmoins cela m'étonne fortement que cela ne soit pas paramétrable via log4J.

    Quelqu'un aurait-il la solution ?

Discussions similaires

  1. Afficher les flux out et err sur la console Windows
    Par Epiliptik dans le forum Eclipse Platform
    Réponses: 6
    Dernier message: 01/10/2013, 14h02
  2. [Batch] Rediriger la sortie d'une commande vers une variable
    Par Merwyn dans le forum Scripts/Batch
    Réponses: 5
    Dernier message: 28/09/2012, 17h30
  3. [log4j] rediriger la sortie standard
    Par jaljal dans le forum Général Java
    Réponses: 4
    Dernier message: 05/10/2009, 10h12
  4. [PDE]Rediriger la sortie d'un thread vers une vue Eclipse
    Par Niko31 dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 16/01/2006, 17h31
  5. Rediriger la sortie d'un programme vers un fichier
    Par olive_le_malin dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 23/11/2005, 09h55

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