1

for ループifステートメントlogger.info("statement" + string)など、アプリケーションの多くの場所で使用しています。

確認したところ、" INFO" レベルが有効になっていない場合でも、最初に文字列メッセージが作成されることがわかりました。

実装した各場所に をINFO追加せずに、文字列が作成される前に有効になっているかどうかを確認する方法。isInfoEnabled()

また、ロガーの使用中にオーバーヘッドを削減する最善の方法は何ですか?

の代わりに +Stringbuilder.

log4j.xmlロガーレバーの設定に使用しています。

4

2 に答える 2

4

適切な解決策は、事前に文字列を生成せずに生データを渡すことをサポートする slf4j/logback を使用することです。Commons Logging ではこれを行うことはできず+StringBuilder文字列連結式は既にStringBuilder.

于 2013-01-15T11:51:11.847 に答える
0

そのためのユーティリティ呼び出し、Logger を介した独自のアーキテクチャを作成することをお勧めします

このようなもの(疑似コード、Loggerの実装については知りません)

class OwnLogger extends Logger {

    public static function info(Object o){
        if(isInfoEnabled()){
            super.info(o);
        }
    }

}
于 2013-01-15T11:53:07.893 に答える