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] Test mode debug [FAQ]


Sujet :

Logging Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    258
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 258
    Par défaut [Log4J] Test mode debug
    Bonjour,
    J'utilise Log4J pour mes développements et je me cogne ce code à chaque fois que je log:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     if (_logger.isDebugEnabled()) {
     ... mes logs
    }
    En fait j'ai lu que cela évite de calculer les expression dans le cas ou nous ne sommes pas en debug. Bref y a t-il un moyen de mutualiser mon if afin de m'éviter de le recopier partout ?

  2. #2
    Membre expérimenté
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mars 2002
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Mars 2002
    Messages : 192
    Par défaut
    Ce que tu as lu sur l'encapsulation des appels au logger est vrai et faux.
    En effet il faut encapsuler des appels au logger qui pourraient être couteux en évaluations de paramètres mais je déconseille pour des problèmes de lisibilité du code de faire de même pour de simple trace texte.

    Personnellement j'écrirai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    _logger.debug("connecting user: " + user.getName()); // pas d'encapsulation juste une concaténation de 2 strings
    et par contre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (_logger.isDebugEnabled()) {
        // Là on fait appel à un traitement lourd juste pour construire le paramètre de la méthode debug qui ne fera rien de tte façon si le niveau n'est pas activé
        // Donc on encapsule la log pour ne pas évaluer inutilement ce paramètre
        _logger.debug("user total amount: " + user.CalculateAmountInDB());  
    }
    Voilà c'était juste une précision sur comment j'utilise personnelement les loggers.
    Pour répondre à ta question finallement, si tu es sous Eclipse tu peux t'écrire un template de code afin de taper automatiquement l'imbrication du debug dans un test.

    Matthieu

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    258
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 258
    Par défaut
    Merci de ta réponse, j'en suis arrivé à la même conclusion car cela devient vite ilisible.
    Par contre y a t-il pas un moyen avec un tag par exemple qu'à la compilation, le compilo me remplace mon tag par mon fameux if.
    Cela permettrait de couvrire l'ensemble de mes traces tout en gardant une bonne lisibilité.

  4. #4
    Membre très actif
    Avatar de vosaray
    Profil pro
    Architecte technique
    Inscrit en
    Mai 2004
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2004
    Messages : 217
    Par défaut
    Une petite note sur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    _logger.debug("connecting user: " + user.getName()); // pas d'encapsulation juste une concaténation de 2 strings
    La concatenation va creer une string de plus , que le niveau du logger soit a debug ou pas. C'est un peu dommage ... ca va consommer de la memoire en plus.

    Si ce type de bout de code se trouve dans une boucle ou qu'il est executé des tonnes de fois, ca peut engndrer des pb de memoire dispo . Sans compter que la concatenation de 2 chaines n'est pas une operation gratuite !

    Dans l'absolu, des que t'imprimes autre chose qu'une string, il vaut mieux proteger ton code par l'appel a .isDebugEnabled().

  5. #5
    Membre expérimenté
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mars 2002
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Mars 2002
    Messages : 192
    Par défaut
    Citation Envoyé par vosaray
    ... C'est un peu dommage ... ca va consommer de la memoire en plus.
    ...
    Dans l'absolu, des que t'imprimes autre chose qu'une string, il vaut mieux proteger ton code par l'appel a .isDebugEnabled().
    On est d'accord là dessus mais après il y a un équilibre à trouver entre performances et lisibilité/maintenabilité du code. Sauf pour des applications critiques et des cas particuliers comme des boucles, personnellement, je pense que le surcoût de la création d'un String supplémentaire s'équilibre largement avec le gain en concision/lisibité du code. Encore une fois, ce n'est que mon avis et pas une règle immuable.

    Matthieu

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

Discussions similaires

  1. Activation du mode debug dans les logs (log4j)
    Par bo_goss dans le forum Logging
    Réponses: 2
    Dernier message: 29/10/2013, 17h24
  2. Pourquoi si je teste, suis-je en mode DEBUG ?
    Par GérardMartinelli dans le forum Eclipse Java
    Réponses: 0
    Dernier message: 20/12/2009, 16h48
  3. Réponses: 8
    Dernier message: 03/10/2008, 11h04
  4. chargement DLL mode debug/release
    Par bihorece dans le forum C++Builder
    Réponses: 3
    Dernier message: 21/06/2004, 14h05
  5. Recupération lors d'un plantage (en mode debug)
    Par aRCHiMeD dans le forum MFC
    Réponses: 3
    Dernier message: 15/01/2004, 17h09

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