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 :

Classe de log


Sujet :

Logging Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Octobre 2003
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 10
    Par défaut Classe de log
    Bonjour à tous,

    je travaille sur des projets online (applis web ...).
    Dans ce genre de projet l'utilisation du debugger d'Eclipse ou tout autre RAD n'est pas envisageable. Notament en raison des parties du projet qui sont externalisées chez des prestataires ...

    Le seul moyen de débugger est donc de tracer un maximum ...
    J'ai donc voulu créer une classe à cet effet.

    Voilà comment elle se présente :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    public class Print {
    	public void printLog(Object o, String msg) {
    		if (o == null) {
    			System.err.println("ERREUR : Object o == null");
    		}
    		else if (msg == null) {
    			System.err.println("ERREUR : String msg == null");
    		}
    		else {
    			System.out.println(o.getClass().getPackage().getName()+"|"+o.getClass().getName()+"|"+msg);
    		}
    	}
    }
    L'avantage de ce code est d'obtenir automatiquement la provenance du message (package, classe).
    Tout ça en tapant un minimum de texte : printLog(this, "mon message");


    Description des problèmes rencontrés :
    1. La déclaration de cette classe nécessite une instanciation avant l'utilisation ... j'aurais préféré déclarer la méthode printLog en static pour pouvoir l'utiliser de la manière suivante :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      Print.printLog(this, "monMessage");
      Seulement dans ce cas l'utilisation d'Object n'est pas possible puisqu'il s'agit d'une instance de classe utilisée dans un contexte statique ...
    2. Si la classe et la méthode ne sont pas déclarées en static, tout fonctionne correctement ... sauf si on essaie de l'appeler à partir d'une méthode statique de classe ...


    Y-a-t-il une solution à mon problème ???

    Merci d'avance pour votre aide.

  2. #2
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut Re: Classe de log
    Salut,

    Je viens de lire le code de ta méthode et j'y vois un gros problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if (o == null) {
    	System.err.println(o.getClass(). ...
    Si o est null, tu fais quand même un appel à getClass() qui te renverra forcément un NullPointerException... c'est un peu dommage...

    De même tu répètes trois fois le même code avec le println()...

    Corrections :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public static void printLog(Object o, String msg) {
    	String name = "ERREUR : Object o == null";
    	String message = msg;
     
    	if (o!=null) {
    		name = o.getClass().getPackage().getName()+"|"+o.getClass().getName();
    	}
    	if (msg!=null) {
    		message = "ERREUR : String msg == null";
    	}
     
    	System.out.println(name+"|"+message);
    }
    Sinon en ce qui concerne tes problèmes :
    1. Je ne vois pas le problème avec le fait que la méthode soit static ?
    2. Et si elle n'est pas static tu peux très bien l'appeller d'une méthode statique, à condition d'utiliser une instance valide de ta classe...


    a++

  3. #3
    Membre éprouvé Avatar de XristofGreek
    Inscrit en
    Août 2004
    Messages
    164
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 164
    Par défaut
    j'ai même pas regardé ton problème.
    Pourquoi refaire ce qui à déjà été bien fait et pensé depuis déjà plusieurs années par d'autres ?
    le boulot d'un informaticien aujourd'hui c'est d'être faineant. Ce que tu souhaites faire se retrouve par exemple dans L'Api LOG4J. Utilise la tu verras que tu seras beaucoup moins emmerdé et tu avanceras beaucoup plus vite.

  4. #4
    Membre habitué
    Inscrit en
    Octobre 2003
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 10
    Par défaut
    J'ai commencé à regarder l'API log4j et c'est vrai qu'elle semble répondre à mes attentes ...

    Seulement, est-il possible de l'utiliser dans un contexte static (ie: on se trouve dans une méthode statique de classe) ???

  5. #5
    Membre émérite Avatar de noOneIsInnocent
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 037
    Par défaut
    une fois que tu utilises cette api ton contexte static n'a rien à voir
    tu vas ecrire dans un fichier tes logs ... et ce pour n'importe quelle classe

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

Discussions similaires

  1. Classe de Log - Tutorial Aurélien Vallée
    Par MoonDragon dans le forum C++/CLI
    Réponses: 0
    Dernier message: 31/03/2012, 21h08
  2. Classe de logging utilitaire
    Par dobfatch dans le forum Logging
    Réponses: 7
    Dernier message: 04/08/2009, 18h16
  3. Modélisation : classe de logs
    Par Feriaman dans le forum C++
    Réponses: 5
    Dernier message: 08/04/2007, 21h30
  4. Réponses: 8
    Dernier message: 13/11/2006, 16h45
  5. Une classe de log ?
    Par chronos dans le forum Java ME
    Réponses: 2
    Dernier message: 21/06/2005, 14h59

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