1

ユーザーがアプリケーションのログファイルに変更をリモートで適用できるようにするための基本的な機能があります。一部のログはjava.util.loggingプロパティファイルを使用して構成され、一部はlog4j/log4cplusスタイルのプロパティファイルを使用して構成されます。ユーザーが適用しようとしているプロパティの基本的な検証を行いたいと思います。つまり、私は次のことを保証したいと思います。

  • すべてのlogging.propertiesファイルには、常に少なくともルートロガー/ロギングレベルが含まれている必要があります
  • ロガー/レベルは有効な値に設定する必要があります。つまり、.level=GIBBERISHなどを設定できないようにする必要があります。
  • おそらく、MaxFileSizeとMaxBackupIndex(log4j)、および.limitプロパティと.countプロパティ(java.util.logging)も設定できるようにします。

これを達成するための最良の方法は何ですか?明らかに、Propertiesオブジェクトのキーと値をループして、ハードコードされたマップまたは有効なプロパティが何であるかを示す他のデータ構造でそれらの値を探すことができますが、私は次のような解決策を考え出そうとしています。それより少しエレガントです。

4

2 に答える 2

1

プロパティファイルに対して部分的な構文チェックのセットを実行する際の問題は、ロギングシステムで受け入れ可能なすべての部分的なバリエーションをキャプチャしない限り、定義上常に不十分であるということです。その場合、ロギングシステムの一部を再作成します。 。検証するためにどのプロパティを選択しても、壊れたファイルを送信するための追加の方法が必ずあります。

個々のプロパティをテストするのではなく、入力ファイルに基づいて追加の(一時的な、チェックの範囲のみの)ロガーオブジェクトを作成し、エラーがスローされるかどうかを検出してみませんか?

于 2009-11-14T00:45:35.600 に答える
0

「エレガントな」解決策は、名前と値のペアのセットをチェックするためのルールベースのエンジンを作成することです。しかし、このユースケースでは完全にやり過ぎのIMOです...チェックが私が想像するよりもはるかに複雑でない限り。

この場合、シンプルな(洗練されていない)ソリューションが最適だと思います。

于 2009-11-14T02:10:17.867 に答える