2010-12-07 35 views
1

J'utilise l'approche suivante lors de la connexion de ma classe:Get LogLevel pour la classe/haricot en cours

import org.apache.commons.logging.Log; 
import org.apache.commons.logging.LogFactory;  
... 
private static Log log = LogFactory.getLog(MyClass.class); 
... 
log.debug("..."); 

Il est venu à mon attention que toutes les déclarations du journal sont toujours exécutées, peu importe ce que loglevel est appliquée. Je ne veux pas que des instructions liées au débogage soient exécutées lorsque je n'en ai pas besoin (la performance est un problème ici).

Je cherche donc quelque chose comme ceci:

if (LogLevel == debug) { 
    log.debug("..."); 
    ... 
} 

Comment puis-je obtenir le LogLevel utilisé pour cette classe?

Répondre

2

Chaque instance de journal dans le package de journalisation des communs peut vous indiquer si le niveau spécifique est activé. Utilisez ce code:

if (log.isDebugEnabled()) 
{ 
    // Debug log statements 
} 

Vérifiez le Commons Logging JavaDoc pour plus d'informations.

+0

Merci, exactement ce que je cherchais. Je ne sais pas comment j'ai pu manquer cela dans l'API. – aksamit

3

Utilisez slf4j comme la façade de journalisation pour votre infrastructure de journalisation, car il résout le problème que vous avez mentionné en utilisant parametrized logging pour améliorer les performances.

Si vous souhaitez un environnement de consignation encore plus rapide, utilisez Logback.