2011-01-31 5 views
1

私たちはPostSharpを使ってログを有効にするプロジェクトを持っています。よく働く。しかし、非常にタイトなループで実行される2つの方法があり、ロギングのオーバーヘッドが実際にかなりの量になってしまいます。私はロギングコードからそれらを除外する最善の方法を理解しようとしています。PostSharp - AttributeExcludeを使用したメソッドを除外しても機能しません

私が読んだ、このアプローチは

AssemblyInfo.cs 

// turn on logging for all methods in all classes 
[assembly: Log(LogType.Debug)] 

Code.cs 

// exclude this specific method 
[Log(AttributeExclude=true)] 
private void SomeMethod(...) 

を動作するはずですから、私はこれを行うと、プロファイラでそれを実行した場合しかし、私はまだ)(ログコードはのsomeMethod上で実行されている参照してください。私はSOとPostSharpのフォーラムの投稿に基づいて、これについて多くの異なる反復を試みました。私はいつも同じ結果を得ています。

これは本当にシンプルでなければならないと感じています。私はちょっと明白に何かを見逃しています。

+0

あなたが提案した解決策はうまくいくはずです。 Reflectorを使ってSomeMethodを見て、コードの内容を確認しましたか? –

答えて

0

私のSomeMethod()ルーチンには、コンパイラが別の方法に変わっているというLINQクエリがありました。このコンパイラで生成されたメソッドは、PostSharpによってLog属性で装飾されていました。これをプロファイラーで見ると、何が起こっているのか明確ではありませんでしたが、Resharperを使用して生成されたコードを掘り下げた後、私はそれを理解しました。

+0

ReSharperまたはReflectorを使用しましたか? –

関連する問題