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

Langage Java Discussion :

Récupérer le nom de la méthode appelante


Sujet :

Langage Java

  1. #1
    Membre confirmé Avatar de benratti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    471
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2004
    Messages : 471
    Points : 649
    Points
    649
    Par défaut Récupérer le nom de la méthode appelante
    Bonjour,

    je souhaiterais récupérer le nom de la méthode appelante. En fait, c'est pour la partie logging d'une application. J'ai besoin de mettre le nom de la méthode appelante dans les logs.

    Pour l'instant, je mets en "dur" le nom de la méthode... c'est un peu lourd et si je modifie le nom d'une méthode, c'est la galère.

    Bref, je souhaiterais faire quelque chose de plus générique. Existe t il un moyen de récupérer le nom de la méthode courante ou la méthode appelante ? Je sais que l'on peut facilement récupérer le nom de la classe, mais pour une méthode, je ne sais pas faire.

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Février 2006
    Messages
    238
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 238
    Points : 267
    Points
    267
    Par défaut
    Salut,

    La seule méthode que je connais et que je n'utiliserais jamais
    c'est d'envoyer une exception et de la récupérer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    try {
        throw new Exception ();
    } catch (Exception e) {
        e.getStackTrace (); // Te renvoie la trace de l'exception, et donc les classes et méthodes appelantes.
    }
    Voila mais je pense et j'espère qu'il y a une meilleure méthode.

    a+

  3. #3
    Membre confirmé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2006
    Messages
    572
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 572
    Points : 631
    Points
    631
    Par défaut
    Si t'es pas obligé de recoder la partie logging a la main, tu peux utiliser une des libs faites expres.

    Log4j marche bien, il y a même un tuto dans la partie java
    Venez partager vos expériences au sein d'un projet sur slicesofit, agile & amélioration continue

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    572
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Février 2007
    Messages : 572
    Points : 675
    Points
    675
    Par défaut
    Citation Envoyé par Kh4iN3 Voir le message
    Salut,

    La seule méthode que je connais et que je n'utiliserais jamais
    c'est d'envoyer une exception et de la récupérer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    try {
        throw new Exception ();
    } catch (Exception e) {
        e.getStackTrace (); // Te renvoie la trace de l'exception, et donc les classes et méthodes appelantes.
    }
    Voila mais je pense et j'espère qu'il y a une meilleure méthode.

    a+
    Depuis java 5, il est possible d'utiliser la methode Thread.getStackTrace

  5. #5
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Points : 4 314
    Points
    4 314
    Par défaut
    Et pourquoi pas plus simplement que de jeter l'exception:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    (new Exception()).getStackTrace();
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Février 2006
    Messages
    238
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 238
    Points : 267
    Points
    267
    Par défaut
    Salut,

    Citation Envoyé par Sanguko Voir le message
    Depuis java 5, il est possible d'utiliser la methode Thread.getStackTrace
    Je ne connaissais pas, c'est déjà beaucoup plus intéressant.

    Citation Envoyé par CyberChouan Voir le message
    Et pourquoi pas plus simplement que de jeter l'exception:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    (new Exception()).getStackTrace();
    Ouais je n'avais pas pensé à cela, pour moi exception = try catch

    a+

  7. #7
    Membre confirmé Avatar de benratti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    471
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2004
    Messages : 471
    Points : 649
    Points
    649
    Par défaut
    Bonjour,

    je vous remercie pour toutes ces réponses. Pour information, et en réponse à Faiche, je ne peux pas utiliser directement log4j. En fait, j'ai un système de gestion de log qui m'a été spécifier auquel je dois faire appel ( celui fera appel bien évidement à log4j mais j'ai des spécifications très précises et dans les paramètres de la méthode de logging, je dois passer le nom de la méthode appelante.

    Je vais donc voir avec la réponse de CyberChouan.

    merci à tous pour votre contribution. Dès que j'aurais mis en place cette solution, je mettrais le tag résolu.

Discussions similaires

  1. récupérer le nom d'une méthode
    Par awalter1 dans le forum Général Python
    Réponses: 13
    Dernier message: 30/01/2012, 08h53
  2. Récupérer le nom de l'action appelante dans mon ActionSupport
    Par Khaled.Noordin dans le forum Struts 2
    Réponses: 4
    Dernier message: 26/07/2011, 16h03
  3. Récupérer le nom d'une méthode
    Par artmicro dans le forum Langage
    Réponses: 8
    Dernier message: 30/06/2011, 11h12
  4. Réponses: 6
    Dernier message: 31/10/2008, 18h08
  5. Récupérer le nom de la page appelante
    Par dessinateurttuyen dans le forum Langage
    Réponses: 2
    Dernier message: 31/07/2006, 17h43

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