3

2つの静的初期化子が互いに呼び出しようとしています:

  • 1つはConfigurationクラスにあり、プロパティファイルから構成パラメーターを読み取ります。
  • 1つはLoggerFactoryクラスにあり、デフォルトのロギングパラメータを設定します。

問題は、それらが相互に参照し合うことです。

  • Configurationクラスでは、プロパティファイルを読み取るときに潜在的なI/Oの問題をログに記録するためにロガーが必要です。
  • LoggerFactoryには、ログファイル名、ログパターン、およびデフォルトのログレベルを設定するための構成ファイルが必要です。

これは明らかに正しくなく、私はあちこちでいくつかのNPEを取得します。

そのような状況に対処するための標準的な方法はありますか?

4

3 に答える 3

3

構成を必要とせず、構成可能なロガーがロードされたときに置き換えられるデフォルトのロガーを使用します。そうすれば、単純な方法で簡単に循環依存を解決できます。

于 2012-08-08T02:18:18.063 に答える
1

ロガーの構成を分離し、構成クラスの前に初期化することができます。これは理想的ではありませんが、いくつかのプロジェクトでこれが行われているのを見てきました。

于 2012-08-07T23:41:34.257 に答える
1

プログラムの起動時にロードするロガーを作成する必要がありますが、後で構成可能なロガーが作成されたときに上書きされます。

于 2012-08-07T23:55:42.030 に答える