アプリケーションにいくつかのWebサービスがあり、Webサービス名に基づいてそれらを別のファイルに記録したいと思います。そのために私はロガーを作成しています
myLogger = Logger.getLogger(logKey);
呼び出しごとにロガーが作成されないように、これらのロガーをキャッシュする必要があるのか、それともオーバーヘッドを無視できるのか疑問に思っています。
ロガーは、デフォルトのログリポジトリ(Hierarchy
)を使用してlog4jによってすでにキャッシュされています。言い換えれば、それは単なるハッシュテーブルルックアップです。
ただし、私の経験では、ロガーを静的にする傾向があるため、とにかくクラスごとに1回だけ呼び出されることになります。
このメソッドLogger.getLogger(logKey)は、logKeyで渡された名前のロガーをロガーキャッシュで検索します。存在しない場合は作成します。最初にロガー名を呼び出すと、ロガーが作成されますが、後で呼び出すとキャッシュから取得されるため、コードでこれを処理する必要はありません。