開発者に各サービスメソッド呼び出しおよび/または例外を記録するのを忘れないようにする代わりに、適切なサービスメソッドをプロキシするパターン、呼び出しをログに記録するプロセス、スローされた例外をトラップ/ロギングするパターン発信者に応答を返す前に?私はプロキシのパターンがあることを知っていますが、私はそれが必要なことをしていません...ロギング要件をより強くするインタフェースを作成する方法があれば、それも可能です。ロガーへの明示的な呼び出しなしで適切にログを記録できるように、すべてのサービス呼び出しをプロキシする場合はどうすればよいですか?
1
A
答えて
2
ログを横断的関心事であるだろう。あなたはそれのためにAOPを使うことができます。 AspectJ
またはSpring AOP
をご覧ください。
+0
いくつかの研究の後、これが私の行く方向です。ありがとう! –
0
サービス層の実装に動的プロキシを使用することを検討できます。
リフレクションAPIを使用するので、サービスコードへのすべてのメソッド呼び出しは、サービス呼び出し、メソッドパラメータ、および例外メッセージを記録できる単一の「呼び出し」メソッドを経由します。あなたがあなたのサービスを呼び出す
public class MyServiceProxy implements InvocationHandler {
public static Object newInstance(Object obj) {
return java.lang.reflect.Proxy.newProxyInstance(
obj.getClass().getClassLoader(),
obj.getClass().getInterfaces(),
new MyServiceProxy(obj));
}
public Object invoke(Object proxy, Method m, Object[] args) {
// Log method name , parameters etc.
try {
method.invoke(proxy, args) ;
}
catch(InvocationTargetException e) {
// log your exceptions and do other things
throw e.getTargetException();
}
}
、あなたの代わりにこの
MyService myServiceRef = (MyService)MyServiceProxy.newInstance(new MyService());
関連する問題
- 1. パフォーマンスをトレースして記録し、Web APIリクエストで呼び出すにはどうすればよいですか?
- 2. 明示的な呼び出しがない場合、Delphiの呼び出しは継承されます
- 3. Linuxでstraceがopen()へのすべての呼び出しをログに記録しない
- 4. 呼び出し元スレッドでインターフェイスコールバックを呼び出すにはどうすればよいですか?
- 5. STM32f429ZIデバッガなしで呼び出しスタックをログに記録する
- 6. プレーンなnativescriptでのAPI呼び出しが機能しているので、角DOMでAPIを呼び出すにはどうすればよいですか?
- 7. Fitnesseのすべてのメソッド呼び出しをログに記録する
- 8. すべての呼び出しを.tranceive()に記録する
- 9. ListView.getView()への不要な呼び出しを防止するにはどうすればよいですか?
- 10. stdイテレータのデストラクタを明示的に呼び出すにはどうすればよいですか?
- 11. APIへの各REST呼び出しのログ記録を有効にするにはどうすればよいですか?
- 12. 呼び出されたバットファイルをどのようにして呼び出すことができますか?
- 13. callkitフレームワークを使用してiOSネイティブUI呼び出しで呼び出し元イメージを表示するにはどうすればよいですか?
- 14. API呼び出しの更新:API呼び出し後に値がnullでないことを確認するにはどうすればよいですか?
- 15. どこのようなサービスを呼び出すコントローラーでRails.application.routes.url_helpers
- 16. クラスメソッドがインスタンスで呼び出されないようにするにはどうすればよいですか?
- 17. LibLog - ロガーへの呼び出しの呼び出し
- 18. 私はそれが呼び出すすべての記号をログに記録して、スレッドをトレースする
- 19. フラグメントのonCreateView()が呼び出されないようにするにはどうすればよいですか?
- 20. Rustでシステムコマンドを呼び出して出力をキャプチャするにはどうすればよいですか?
- 21. 一度しか呼び出されない関数をもう一度呼び出すと、どのような引数を投げるべきですか?
- 22. メソッドを呼び出してその結果を出力するにはどうすればよいですか?
- 23. コード内のある場所からすべてのaxios呼び出しをログに記録する方法
- 24. SuperAgent AJAXがOPTIONSを呼び出さないようにするにはどうすればよいですか?
- 25. ValgrindエラーなしでJNI_CreateJavaVMをどのように呼び出すのですか?
- 26. プログラムの実行後に実行できるようなパラメータを含むメソッド呼び出しを記録する
- 27. ジェネリック引数を使用してジェネリックメソッドを呼び出す場合はどうすればよいですか?
- 28. Androidに証明書が表示されないときに、Androidで安全な(SSL)Webサービスを呼び出すにはどうすればよいですか?
- 29. MainActivityのpopBackStack()へのフラグメント呼び出しをインターセプトするにはどうすればよいですか?
- 30. MVCビューで呼び出しアクションの名前を調べるにはどうすればよいですか?
どのようにプロキシパターンがここに収まらないのですか?または、これを実現するために何かを実装する方法を混乱させていますか? –