ステートレス Bean が会話状態を維持しないことはわかっていますが、必要なのはロガーだけです。呼び出されるすべてのメソッドでロガーを取得する必要がありますか? そうでない場合は、どこで初期化する必要がありますか?
そのようなコードを書いた場合、ロガーを使用するメソッドで NullPointerException が発生しないことは確かですか?
@PostConstruct
public void init() {
logger = Logger.getLogger();
}
ステートレス Bean が会話状態を維持しないことはわかっていますが、必要なのはロガーだけです。呼び出されるすべてのメソッドでロガーを取得する必要がありますか? そうでない場合は、どこで初期化する必要がありますか?
そのようなコードを書いた場合、ロガーを使用するメソッドで NullPointerException が発生しないことは確かですか?
@PostConstruct
public void init() {
logger = Logger.getLogger();
}
リクエスト/セッション固有のロガーは必要ないと思いますよね?その場合、静的クラスメンバーを使用してロガーを追加し、すべてのBeanインスタンスに同じロガーを使用させることもできます。
次のプロパティを持つシングルトン クラスを作成します。
getInstance()
クラスの唯一のインスタンスを与えるメソッドgetLogger()
ロガーを取得するメソッドこのクラスのコンストラクターでロガーを初期化し、
使用する必要があるたびに getLogger() メソッドからロガーを取得できます
試す:
private static final Logger log = Logger.getLogger();
スレッド固有の値が必要な場合は、ロガーの出力ハンドラーがすべての行にスレッド名を書き込むように注意してください。問題はありません。