2

クラスからログを記録するときに、次のアプローチを使用しています。

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("...");
   ...
}

そのクラスで使用されている現在のLogLevelを取得するにはどうすればよいですか?

4

2 に答える 2

4

コモンズロギングパッケージの各Logインスタンスは、特定のレベルが有効になっているかどうかを通知します。このコードを使用します:

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

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

于 2010-12-07T14:32:18.747 に答える
3

slf4jをロギングフレームワークのロギングファサードとして使用します。これは、パフォーマンスを向上させるためにパラメーター化されたロギングを使用することで、前述の問題を解決するためです

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

于 2010-12-07T14:12:05.540 に答える