Log函数调用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(); } }
我很可能使用log4net来记录来自Log属性的调用。 怎么能实现这一目标?
提前致谢!
您可以使用PostSharp之类的工具来创建日志记录方面。
据我所知,实现这一目标的唯一方法是使用PostSharp等库进行面向方面编程。
唯一可能的方法是为具有[Log]
属性的所有类重写生成/编译的IL代码。 为此,您需要编写一个分析和操作代码的工具,并将其注册为“Post build事件”(在Visual Studio – >项目设置中)。
对于像这样的工作,Mono Cecil可能是一个很好的帮助: 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; }