12

アプリケーションにいくつかのWebサービスがあり、Webサービス名に基づいてそれらを別のファイルに記録したいと思います。そのために私はロガーを作成しています

myLogger = Logger.getLogger(logKey);

呼び出しごとにロガーが作成されないように、これらのロガーをキャッシュする必要があるのか​​、それともオーバーヘッドを無視できるのか疑問に思っています。

4

2 に答える 2

23

ロガーは、デフォルトのログリポジトリ(Hierarchy)を使用してlog4jによってすでにキャッシュされています。言い換えれば、それは単なるハッシュテーブルルックアップです。

ただし、私の経験では、ロガーを静的にする傾向があるため、とにかくクラスごとに1回だけ呼び出されることになります。

于 2009-04-21T08:49:40.047 に答える
9

このメソッドLogger.getLogger(logKey)は、logKeyで渡された名前のロガーをロガーキャッシュで検索します。存在しない場合は作成します。最初にロガー名を呼び出すと、ロガーが作成されますが、後で呼び出すとキャッシュから取得されるため、コードでこれを処理する必要はありません。

于 2009-04-21T09:04:26.220 に答える