2010-12-07 10 views
1

ich folgende Vorgehensweise verwenden, wenn aus meiner Klasse Anmeldung:Get LogLevel für aktuelle Klasse/bean

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

Es ist gekommen, um meine Aufmerksamkeit, dass alle Log-Aussagen immer ganz gleich ausgeführt werden, was loglevel angewandt wird. Ich möchte keine debugbezogenen Anweisungen ausführen lassen, wenn ich sie nicht benötige (Leistung ist hier ein Problem).

Suche So etwas wie folgt aus:

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

Wie kann ich den aktuellen LogLevel erhalten für diese Klasse verwendet?

Antwort

2

Jede Log-Instanz im Commons-Protokollierungspaket kann Ihnen sagen, ob die bestimmte Ebene aktiviert ist. Verwenden Sie diesen Code:

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

Überprüfen Sie die Commons Logging JavaDoc für weitere Informationen.

+0

Danke, genau das, was ich gesucht habe. Ich bin mir nicht sicher, wie ich das in der API verpasst haben könnte. – aksamit

3

Verwenden Sie slf4j als die Protokollierungsfassade für Ihr Protokollierungsframework, da es das Problem löst, das Sie erwähnten, indem Sie parametrized logging für verbesserte Leistung verwenden.

Wenn Sie einen noch schnelleren Protokollierungsrahmen möchten, verwenden Sie .