AOP.NETのDIコンテナとしてUnityを使用していて、DIコンテナを使うならばAOPでログをはさみこめると便利だなと思って調べてみました。Javaだとバイトコードをいじって目的を達成してしまう黒魔術なライブラリがあるけれど、C#ではCLR周りは良くわからないのでそう言った方法ではなく、インターフェースを使用する方向で調べました。たどり着いたのが以下のサイト。Unityのバージョンが少し古いですが、設定方法は同じで行けました。Unity」というドキュメントに詳しい情報が載っています。言うとこっちの方が必要になると思うので引き続き調べました。ググったのでサイトは覚えていませんが、最終的に以下の手順になりました。導入方法NuGetから「Unity」「Unity.Mvc」「Unity.Interception」をインストールApp_Startフォルダに出来たUnityMvcActivatorクラスのStartメソッドのコメントを外すUnityConfigクラスのRegisterTypesメソッドにマッピングを記入する修正したソースはこんな感じです。};}LoggingInterceptionBehaviorクラスは上記サイトと大して変わらないですが、ログ出力にNLogを使用しているので自分の備忘録として残しておきます。}}これでDIしたオブジェクトのメソッドが実行される前後で、インターフェース名とメソッド名をログに出力することが出来ます。インターフェース名を実装クラス名にしたい気もしますが、プロダクトではインターフェースと実装クラスは1対1になるのでまあいいかなと。おまけControllerでも同じことをしたい場合は、ActionFilterAttributeを実装したフィルターを用意することになりますね。追記Disposeメソッドで困る(ログ出力が全てIDisposableになる)ので、ログ出力を実装クラス名にする方法を追加で調べました。以下の方法で可能でした。前回からだいぶ時間が空いてしまいました。(1)注目記事はてなブログをはじめよう!redwarriorさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。