2010-12-07 4 views
1

私のクラスからログインするときに、私は、次のアプローチを使用しています:取得のLogLevel

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

これは、すべてのログステートメントは、常に関係なく適用されているものログレベルで実行されていないことを私の注意に来ています。私はそれが必要でないときにデバッグ関連のステートメントを実行させたくありません(パフォーマンスはここで問題になります)。

だから私はこのような何かを探しています:

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

私はそのクラスに使用されている現在のログレベルを取得するにはどうすればよいですか?

答えて

2

特定のレベルが有効になっているかどうかを、Commonsロギングパッケージの各Logインスタンスで確認できます。このコードを使用してください:

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

詳細については、Commons Logging JavaDocを確認してください。

+0

ありがとう、まさに私が探していたものです。どのように私はAPIでそれを逃した可能性がわかりません。 – aksamit

3

パフォーマンスの向上のためにparametrized loggingを使用して前述の問題を解決するため、ログフレームワークのログ出力ファサードとしてslf4jを使用してください。

さらに高速のロギングフレームワークが必要な場合は、Logbackを使用してください。

関連する問題