1

プレゼンテーション層、サービス層、dao 層を備えた従来の 3 層アプリケーションで、簡潔で重複のない例外レポート ログ メッセージを確保するための最も適切な方法は何ですか。dao レイヤーがあらゆるタイプのチェック済み例外をキャッチし (Java 用語を使用しますが、他の例外処理言語にも同じ概念が適用されます)、それを適切なメッセージで daoexception に変換するとします。適切なメッセージ (例: "db へのアクセス中に例外が発生しました" + e.getMessage()) も同時に dao レイヤーに記録する必要がありますか? 次に、サービス レイヤーはすべての daoexception をキャッチし、それ自体が適切なサービス レイヤー メッセージを提供し、daoexception を serviceexception に変換 (ラップ) してから再スローします。サービス層もキャッチされた例外をログに記録する必要がありますか? 要するに:

  • daoレイヤーだけがログに記録する必要がありますか?
  • サービス層だけがログに記録する必要がありますか?
  • 両方の層でログに記録する必要がありますか?
  • それとも、ユースケース/サービスコールなどに応じて、ケースバイケースで各状況を検討する必要がありますか?

この質問では、プレゼンテーション層を無視しています。

4

3 に答える 3

0

質問は私にとって主観的なものです。AFAIK 設計による決定です。

答えるには、呼び出しと例外をログに記録する必要があることを考慮すべきではありません。ログに記録するもの、食べるもの、無視するものがあります。また、Web サービスやその他のコンポーネントの呼び出しについては、サービス層のログが必要になることは間違いありません。あなたの質問では、むしろ4番目のオプションを使用したいと思います。

于 2013-02-15T06:33:23.510 に答える
0

可能な限り高いレベルでログに記録します。

たまたま Apache のライブラリを使用していませんか。Commonsたとえば、StringUtils.isBlank(). これらのライブラリはエラー メッセージをログに記録しません。代わりに、必要に応じて例外をスローし、ユーザーが処理を決定したり、役立つデバッグ メッセージを出力したりします。

于 2013-02-15T06:34:10.903 に答える
0

サービスレイヤー例外のスタックトレースには、基礎となるdao例外が含まれるため、サービスレイヤーでログに記録するだけで理にかなっていると思います。

于 2013-02-15T06:17:38.207 に答える