【问题标题】:Log function calls parameter values & return values in c#c#中的日志函数调用参数值和返回值
【发布时间】:2011-09-13 04:51:15
【问题描述】:

假设我有一个看起来像这样的课程。

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 属性的调用。如何实现?

提前致谢!

【问题讨论】:

标签: c# reflection custom-attributes


【解决方案1】:

据我所知,实现这一点的唯一方法是使用诸如PostSharp 之类的库进行面向方面编程。

【讨论】:

    【解决方案2】:

    您可以使用PostSharp 之类的工具来创建日志方面。

    【讨论】:

      【解决方案3】:

      这可能的唯一方法是为所有具有[Log] 属性的类重写生成/编译的IL 代码。为此,您需要编写一个工具来分析和操作您的代码并将其注册为“构建后事件”(在 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;
      }
      

      【讨论】:

        猜你喜欢
        • 2017-07-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-10-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多