0

何度も試みた結果、ようやく質問を立てることができました。それがある程度意味があり、理解しやすいことを願っています。SpringとJerseyを使用するWebアプリケーションに取り組んでいます。アプリケーションで実行されたすべてのアクティビティをデータベースに記録するアプリケーション全体のロガーを実装する必要があります。当分の間、私はHAS-A実装を使用し、CRUD操作が実行されるすべての場所でloggingメソッドを呼び出しました。このようなもの:

LogBean lBean=new LogBean("rickesh@email.com","update","address","127.0.0.1");
logToDatabase(lBean);

しかし、これにより多くのコード行が繰り返されるため、CRUD操作が実行されるセクションごとにlogメソッドを繰り返しインスタンス化して呼び出す必要があります。コントローラレイヤー、RESTレイヤーからロギングを引き出す方法はありますか?SpringまたはJerseyに、別のレイヤーでロギングを実行できる特定の機能があり、どこでも同じコード行を繰り返し続ける必要はありません。ご意見をお聞かせください。

4

2 に答える 2

6

ログの書き込みが面倒になっている場合は、AOPを調べる必要があります。すでにSpringを使用している場合は、Spring AOPについて読む必要があります。ロギング自体については、SpringAOPを使用してロギングを読んでください。

于 2013-02-08T13:58:11.027 に答える
1

AOPはより良い方法ですが、この問題を解決するためにAOPを習得するのに時間がかかる場合は、ここに簡単な代替方法があります。

  1. log4jJARをWebAppに追加します。WebAppにバンドルされているlog4jバージョンが、アプリケーションサーバーにすでにあるバージョンと競合していないことを確認してください
  2. クラスパス(src / main / resources)にFILEおよびCONSOLEアペンダーのlog4j.xmlを配置します
  3. Springが提供するLog4JConfigureListenerがあり、web.xmlのセクションで宣言できます。
  4. さらに、生成されるログが多すぎる場合は、アプリケーションのlog4j.xmlを介して特定のパッケージのみに、またはプロジェクト固有のパッケージのルートロガー構成を使用して、ロガーの出力を制限できます。たとえば、JBossでは、特定のLOGレベルでパッケージの「カテゴリ」を追加できます。

特定の「個別のレイヤー」には、そのレイヤーのログアペンダーを対象とする個別の個別のパッケージ名が必要です。これがお役に立てば幸いです。

于 2013-02-08T15:58:56.737 に答える