2013-04-04 6 views
2

que je fais une revue de code et je voudrais votre pensée sur un petit morceau de code:Log4J - Niveau du journal de test utile?

if(logger.isDebugEnabled()) 
{ 
    logger.debug("debug log"); 
} 

Y at-il une vraie raison/avantage de faire le test if(logger.isDebugEnabled())?

Pourquoi ne pas écrire simplement logger.debug("debug log"); sans le test?

+5

Avez-vous essayé de le chercher avant de le demander? http://stackoverflow.com/questions/963492/in-log4j-does-checking-isdebugenabled-before-logging-improve-performance – BobTheBuilder

+0

@baraky Oui c'est exactement ce que je cherche. Merci pour le lien (je ne l'ai pas trouvé avant de poster ma question) – TheEwook

Répondre

5

Ce n'est pas utile pour l'exemple que vous avez fourni. Mais il peut être utile si vous incluez d'autres données dans la ligne du journal, par exemple:

logger.debug("Info: " + someObject.getSomeInformation()); 

Notez que la méthode getSomeInformation sera appelé someObject avant logger.debug est appelée, si le niveau est mise au point ou non. En outre, une concaténation de chaîne sera effectuée. Pour éviter le coût de l'appel de méthode et de la concaténation de chaîne, vous pouvez le mettre dans un if comme dans votre question.

+0

'Notez que la méthode getSomeInformation sera appelée sur someObject avant que logger.debug' Je ne le savais pas. En effet maintenant je peux voir la différence. Merci pour votre perspicacité;) – TheEwook

Questions connexes