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, niveau de trace et thread


Sujet :

Logging Java

  1. #1
    Futur Membre du Club
    Inscrit en
    Avril 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 9
    Points : 6
    Points
    6
    Par défaut log4j, niveau de trace et thread
    Bonjour a tous,

    J'ai deux questions concernant l'utilisation et la configuration de log4j.

    Premiere question :
    Dans mon application, j'ai besoin de creer des niveaux de traces supplementaires. Pour cela j'ai etendu la classe Level de log4j. J'ai de plus besoin d'activer des niveaux de traces non contigu (par exemple niveau 2, 4 et 16) pour cela je me vois obligee d'etendre la classe Logger et re-implementer la fonction isEnabledFor() avec un masque defini en propriete.
    J'ai l'impression que la configuration de base de log4j ne le permet pas autrement. Est-ce que je me trompe ?

    Deuxieme question :
    Je cherche a afficher les traces pour un/des threads particuliers. Est-ce possible avec log4j et si oui comment ?

    Merci pour votre aide.
    Nath

  2. #2
    Membre expérimenté Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Points : 1 371
    Points
    1 371
    Par défaut
    Citation Envoyé par nath8050
    j'ai besoin de creer des niveaux de traces supplementaires. Pour cela j'ai etendu la classe Level de log4j.
    Oui c'est tout à fait comme ca qu'il faut faire.

    Citation Envoyé par nath8050
    J'ai de plus besoin d'activer des niveaux de traces non contigu (par exemple niveau 2, 4 et 16)
    Pas bien compris ce que tu veux faire? C'est moi qui doit me replonger dans la doc pour comprendre ou c'est ton explication qui peut ne pas etre clair?
    Qu'appelles-tu non contigu? (activer par exemple, juste debug et warn et ne pas afficher info/error... ??)

    Citation Envoyé par nath8050
    Je cherche a afficher les traces pour un/des threads particuliers. Est-ce possible avec log4j et si oui comment ?
    Oui c'est possible. Tu peux definir un logger avec un nom particulier. Et dans ce cas dans ton thread tu n'appellera pas rootLogger ni le logger de la classe de ton thread mais le logger que tu as defini. J'espere avoir été assez clair..;

  3. #3
    Futur Membre du Club
    Inscrit en
    Avril 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    activer par exemple, juste debug et warn et ne pas afficher info/error... ??
    [/QUOTE]

    oui c'est exactement ca. J'ai cru comprendre qu'avec log4j on pouvait definir un niveau min et un niveau max mais il ne me semble pas que l'on puisse demander tel et tel niveau.

    Citation Envoyé par maxf1
    Oui c'est possible. Tu peux definir un logger avec un nom particulier. Et dans ce cas dans ton thread tu n'appellera pas rootLogger ni le logger de la classe de ton thread mais le logger que tu as defini. J'espere avoir été assez clair..;
    En fait j'ai aussi besoin de definir un logger pour chacunes de mes classes. Ce que je souhaite c'est pouvoir configurer les traces pour ne garder que celles associees a un thread particulier et pour certaines classes. Est-ce que je suis claire ce coup ci ?

    En tout cas merci pour ton aide maxf1

  4. #4
    Membre expérimenté Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Points : 1 371
    Points
    1 371
    Par défaut
    de mémoire je dirai que ca n'existe pas de base.

    Je crois que l'on peut juste definir le level le plus bas, voir le plus haut, mais pas les levels de notre choix.

    Si tu veux faire un logger pour chaque classe alors nomme tes loggeurs comme tes class et quand tu recuperes le logger tu le fais via ma_classe.class

    Sinon si tu veux logger différements 2 Thread de la meme classe la ca devient plus complexe. Le mieux serait de prendre le numero du thread par exemple et de modifier le nom du fichier (ou sont stocker les logs) avec le numero du thread.

  5. #5
    Futur Membre du Club
    Inscrit en
    Avril 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    En effet je veux pouvoir differencier 2 thread pour une meme classe mais tout en gardant le meme fichier. Je sais je suis compliquee.
    Mon idee serait de nommer mon thread avec un nom predefini a l'initialisation qui me permettrait de savoir si celui ci doit etre tracé ou non. Un truc du genre :
    Thread.currentThread().setName("TraceOff");
    ou
    Thread.currentThread().setName("TraceOn");
    suivant un parametre de conf.
    Et ensuite de recuperer ce nom dans mon Logger.isEnabledFor() que j'ai deja redefini pour ajouter une condition.
    if (Thread.currentThread().getName()=="TraceOn") {...}
    Ca me semble un peu tiré par les cheveux mais bon... Si tu as une meilleure solution je suis preneuse
    Merci encore !

  6. #6
    Membre expérimenté Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Points : 1 371
    Points
    1 371
    Par défaut
    Ah non si ton but est de faire ca alors un parametre comme tu as mis c'est bien ou alors quarement un boolean. En fonction de ce boolean tu log ou non.
    J'ai cru que tu voulais etre plus compliquée encore moi.

    Genre t'as 3 thread, un doit logguer dans le fichier toto1.txt l'autre toto2.txt et l'autre toto3.txt ==> la ca aurait été plus galere.

  7. #7
    Futur Membre du Club
    Inscrit en
    Avril 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    Merci beaucoup pour ton aide maxf1 !

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

Discussions similaires

  1. [Log4j] identifier les traces
    Par PoichOU dans le forum Logging
    Réponses: 4
    Dernier message: 06/06/2008, 13h15
  2. Réponses: 3
    Dernier message: 04/07/2007, 11h14
  3. Visualisation de la trace des threads
    Par L4BiN dans le forum Concurrence et multi-thread
    Réponses: 6
    Dernier message: 17/04/2007, 18h06
  4. [tuning] Niveau de trace
    Par ljoly dans le forum Oracle
    Réponses: 4
    Dernier message: 21/07/2006, 11h05
  5. Architecture d'un serveur multijoueurs niveau emmission avec utilisation thread
    Par goof_22 dans le forum Développement 2D, 3D et Jeux
    Réponses: 8
    Dernier message: 22/04/2006, 16h26

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