10

AOPを使用してアプリケーションにロギングを実装しようとしています(ちなみにPostSharpですが、この質問はAOPフレームワークに関連しています)。

私たちが直面している問題は、取得する情報が次のようなものであることです。

メソッド XXX にパラメータを入力:

  • 値型の場合はパラメーターの内容。
  • ToString() オーバーライドが行われている場合はすべて。
  • ToString() がオーバーライドされていない場合はクラス名。

通常は 3 番目のケースであるため、この情報はあまり役に立ちません。役に立たない情報もたくさん作成しています。

製品へのログインに AOP を使用したことがある場合、この問題をどのように管理しましたか?

前もって感謝します。

4

2 に答える 2

6

いくつかのアプローチ:

  • ログに記録する型に共通のインターフェイスを配置します。(ILoggable など)。そのインターフェースを実装することで、あなたのアスペクトはあなたが望むものを正確に記録することができます。欠点は、ログに記録する可能性のあるすべてのオブジェクトに対して ILoggable を実装/維持する必要があることです。

  • リフレクションを使用します (これは、ブログのこの監査の例で行ったことです。MVC ActionFilter を使用しますが、原則は同じです)。トレードオフはブログ投稿で詳しく説明されていますが、基本的には、ログの量と頻度に応じて、リフレクションとパフォーマンスの問題を使用することの複雑さです。

  • シリアル化を使用します。オブジェクトを指定して、それを Json や XML などにシリアル化し、その文字列をログに記録します。ログで何をしているかに応じて、これは完全なものから価値のないものまでさまざまであり、シリアライゼーションの仕組みとオブジェクトの複雑さによっては、これもパフォーマンスの問題になる可能性があります。

于 2014-01-30T22:25:03.227 に答える