2011-09-12 15 views
1

このようなクラスがあります。ログ関数はパラメータ値を呼び出して、Cで戻り値を返します。

public static class Config 
{ 
    public static string GetAppSetting(string key) 
    { 
     return ConfigurationManager.AppSettings[key].ToString(); 
    } 
} 

そして、私は重要なパラメータ&戻り値と一緒に、このメソッドへのすべての呼び出しを記録したかったです。ログ属性からの呼び出しをログに記録する

[Log] 
public static class Config 
{ 
    public static string GetAppSetting(string key) 
    { 
     return ConfigurationManager.AppSettings[key].ToString(); 
    } 
} 

Iよ最も可能性の高い使用log4netの:私はしたい

のみコード変更がこれです。これはどのように達成できますか?

ありがとうございます!

+0

が重複する可能性のようなものにメソッドのシグネチャを変更することのほとんどpropablyあなたのより良いですone:http://stackoverflow.com/questions/4133569/how-to-log-method-calls-on-targets-marked-with-an-attribute –

答えて

2

PostSharpのようなツールを使用してロギングのアスペクトを作成できます。

3

私が知る限り、これを実現できる唯一の方法は、PostSharpなどのライブラリを使用したアスペクト指向プログラミングです。

0

この可能性がある唯一の方法は、[Log]属性を持つすべてのクラスに対して生成/コンパイルされたILコードを書き換えることです。これを行うには、コードを分析して操作するツールを作成し、それを「ビルド後のイベント」として登録する必要があります(Visual Studio - >プロジェクト設定)。このモノセシルような仕事のために

大きな助けになるかもしれません:http://www.mono-project.com/Cecil

しかし、あなたのコードを書き換えると、このの

public static string GetAppSetting(string key) 
{ 
    var result = ConfigurationManager.AppSettings[key].ToString(); 

    Trace.TraceInformation(String.Format("Config.GetAppSetting - Key: {0}, Result: {1}", key, result)); 

    return result; 
} 
関連する問題