1

我想跟踪每个函数入口和出口。假设我的类包含三个方法 MethodA MethodB MethodC... 通过实例有人调用 MethodA 和 methodA 调用 MethodB 和 MethodB 调用 methodC

public class test
{
   Public void MethodA()
   {
      MethodB();
   }
   public void MethodB()
   {
      // Some Operation
      MethodC();
   }
   public void MethodC()
   {
      //Some Operation
   }
}

现在,当有人调用 test obj = new test(); 和 obj.MethodA(); 我希望跟踪器在数据库中写入类似“Entered MethodA”的下一行“Entered MethodB”下一行“Entered MethodC”,然后是“Exited MethodC”“Exited MethodB”,最后是“Exited Method a”

我的限制是:我不应该在每个方法进入和退出中编写此跟踪代码。我希望这会自动发生。只需将 App.config 文件的 Key 设置为 true,跟踪器就会开始操作,false 意味着跟踪禁用。

这是我们要调试的实时生产应用程序。

为此,我们有两种方法:

使用 Policy Injection Applicaiton 块用策略包装 Test 类的实例:从 ICallHandler 创建一个策略处理程序,然后创建一个 MatchingRule,在 MatchingRule 中读取 app.config 文件,如果启用了跟踪,则返回 true,否则返回 false。

这样做的缺点是:每次我们通过 Policy 容器创建任何类的 Instance 时,系统都会读取 app.config 文件,然后读取配置文件中存在的策略,即使跟踪被禁用......这可能会降级表现...

我们发现了另一种方法,即存在于 Logging Application Block 中的 Tracer 类。它有类似方法入口方法出口的功能。http://www.michaelhamrah.com/blog/2010/02/performance-tracing-for-your-applications-via-enterprise-library/

请提供更多关于 Tracer 类的想法。我的要求是否适合插入 Tracer 类。

  • POSTSHAP 不在我的预算中

非常感谢,

苏拉杰

4

0 回答 0