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 :

quelle classe a appelé ma méthode ?


Sujet :

Logging Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 119
    Points : 55
    Points
    55
    Par défaut quelle classe a appelé ma méthode ?
    Bonjour, j'ai une question par rapport à mes classes :
    Je développe un mini logger, qui permet d'écrire dans un fichier de log des informations, par exemple pour les exceptions... (je me suis inspiré de Log4J et Log4Net pour ceux que ça intéresse, en plus c'est gratuit)
    J'ai donc une classe Logger que j'instancie dans mes autres classes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public class TestLog
    {
    	public static void main(String[] args)
    	{
    		monpackage.Logger logger = new monpackage.Logger();
    		logger.erreur(new Exception("blablabla"));
    	}
    }
    Seulement voilà, j'aimerais bien analyser dans la classe Logger quelle classe a appelé la méthode pour pouvoir afficher dans le log l'exception, mais aussi à quel endroit l'exception s'est déclenchée
    Voici ce que je voudrais avoir dans mon log :
    [2007-03-01] [17:56:11,781] [ERREUR] [package.classe] [blablabla]
    (et si je pouvais avoir aussi la méthode qui appelle le logger ça serait encore mieux évidemment...)

    Est-ce possible ?

    Merci d'avance !

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2006
    Messages : 25
    Points : 20
    Points
    20
    Par défaut
    Apparement, c'est la 'StackTrace' qui t'interessent.
    pour la récuperer c'est e.getStackTrace(); où e est un objet de type Exception.

    La StackTrace, c'est la pile d'éxécution, en d'autre terme, c'est l'itinéraire entre l'endroit où elle est généré et l'endroit où tu l'attrape.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 119
    Points : 55
    Points
    55
    Par défaut
    Oui c'est exactement ça !! J'avais pas vu que la stacktrace était sous forme d'objet...

    En tout cas merci !!

  4. #4
    Membre expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Points : 3 083
    Points
    3 083
    Par défaut
    Si tu utilises Log4j ou consorts, tu devrais avoir la méthode logger.error(message, exception) !

    Ca te permet de passer un message (1 ligne pour indiquer quelle erreur c'est) et l'exception pour afficher le StackTrace. Il ne faut pas passer le stacktrace dans le message, c'est pas très top.
    Comment ça ? La réponse à ton problème n'est ni dans la faq, ni dans les tutos, ni dans sources ??? Etonnant...
    De la bonne manière de poser une question (et de répondre).
    Je ne fais pas de service par MP. Merci (...de lire les règles...).
    Ma page dvp.com

  5. #5
    Membre confirmé Avatar de billynirvana
    Homme Profil pro
    Architecte technique
    Inscrit en
    Décembre 2004
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2004
    Messages : 472
    Points : 552
    Points
    552
    Par défaut
    Citation Envoyé par zarbiman
    Bonjour, j'ai une question par rapport à mes classes :
    Je développe un mini logger, qui permet d'écrire dans un fichier de log des informations, par exemple pour les exceptions... (je me suis inspiré de Log4J et Log4Net pour ceux que ça intéresse, en plus c'est gratuit)
    J'ai donc une classe Logger que j'instancie dans mes autres classes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public class TestLog
    {
    	public static void main(String[] args)
    	{
    		monpackage.Logger logger = new monpackage.Logger();
    		logger.erreur(new Exception("blablabla"));
    	}
    }
    Seulement voilà, j'aimerais bien analyser dans la classe Logger quelle classe a appelé la méthode pour pouvoir afficher dans le log l'exception, mais aussi à quel endroit l'exception s'est déclenchée
    Voici ce que je voudrais avoir dans mon log :
    [2007-03-01] [17:56:11,781] [ERREUR] [package.classe] [blablabla]
    (et si je pouvais avoir aussi la méthode qui appelle le logger ça serait encore mieux évidemment...)

    Est-ce possible ?

    Merci d'avance !


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public class TestLog
    {
    	public static void main(String[] args)
    	{
    		monpackage.Logger logger = new monpackage.Logger(this.getName());
    		logger.erreur(new Exception("blablabla"));
    	}
    }
    this.getName() te retourne package.class


    Et je te conseille de faire un singleton pour ton logger.

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

Discussions similaires

  1. [Introspection] Savoir quelle classe a appelé une méthode
    Par muad'dib dans le forum Général Java
    Réponses: 2
    Dernier message: 26/11/2008, 16h34
  2. [Runtime class loading] Appeler une méthode qui n'existe pas
    Par Invité dans le forum Général Java
    Réponses: 14
    Dernier message: 27/06/2008, 08h48
  3. [Reflection] Comment connaitre le nom de la classe qui appelle une méthode?
    Par framus.class dans le forum API standards et tierces
    Réponses: 11
    Dernier message: 09/06/2008, 09h13
  4. Réponses: 8
    Dernier message: 02/06/2008, 11h56
  5. Demander à une classe l'appel à une méthode
    Par sliderman dans le forum Langage
    Réponses: 3
    Dernier message: 22/01/2008, 14h45

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