3

ステートレス Bean が会話状態を維持しないことはわかっていますが、必要なのはロガーだけです。呼び出されるすべてのメソッドでロガーを取得する必要がありますか? そうでない場合は、どこで初期化する必要がありますか?

そのようなコードを書いた場合、ロガーを使用するメソッドで NullPointerException が発生しないことは確かですか?

 @PostConstruct
 public void init() {
   logger = Logger.getLogger();
 }
4

3 に答える 3

1

リクエスト/セッション固有のロガーは必要ないと思いますよね?その場合、静的クラスメンバーを使用してロガーを追加し、すべてのBeanインスタンスに同じロガーを使用させることもできます。

于 2012-04-18T15:05:16.003 に答える
0

次のプロパティを持つシングルトン クラスを作成します。

  1. クラス自体の型を持つ静的フィールド
  2. このロガー クラスのインスタンスが 1 つだけ開始されるようにするためのプライベート コンストラクター
  3. getInstance()クラスの唯一のインスタンスを与えるメソッド
  4. getLogger()ロガーを取得するメソッド

このクラスのコンストラクターでロガーを初期化し、
使用する必要があるたびに getLogger() メソッドからロガーを取得できます

于 2012-04-18T15:11:03.597 に答える
0

試す:

private static final Logger log = Logger.getLogger();

スレッド固有の値が必要な場合は、ロガーの出力ハンドラーがすべての行にスレッド名を書き込むように注意してください。問題はありません。

于 2012-04-18T15:21:35.640 に答える