我想跟踪每个函数入口和出口。假设我的类包含三个方法 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 不在我的预算中
非常感谢,
苏拉杰