3

巨大なウェブアプリがあります。ユーザーが Web アプリケーションを操作するとき、ほとんどの関数は 1 回だけ呼び出されるため、パフォーマンスの問題はありません。システムから何度も異なるメソッドを呼び出す新しい「ファイルからインポート」メソッドを作成しました。他の人のメソッドを変更したり、log4j を無効にしたりしたくありません。ファイルからのインポートはめったに使用されず、主要な機能ではなくアドオンのように扱われます。このため、パフォーマンスの問題が発生します。プロファイリングの結果、ほぼ 22% の時間が log4j によって使用されていることがわかりました。

1 つのメソッドとそれが呼び出すメソッドに対して log4j をプログラムで無効にすることは可能ですか?

4

1 に答える 1

6

パフォーマンス上の理由から、次のように呼び出しを置き換える必要があると思います。

 log.debug("some informantion: " + objA);

これとともに:

if(log.isDebugEnabled()) {
   log.debug("some informantion: " + objA);
}

または、次のような FormatLogger クラスを使用できます: https://stackoverflow.com/a/105908/548225

編集

プログラムでロギングを無効にするには、次のようなコードを使用できます。

Logger.getLogger("your.logger.name").setLevel(Level.OFF);
Logger.getRootLogger().setLevel(Level.OFF);
于 2013-03-28T10:05:17.357 に答える