我想创建一个我想要应用于类的属性。
在这个类中,如果调用了一个方法,在postharp的OnEntry
和OnExit
方法中,我想记录确切的方法名称,如下所示:
“GetPartners开始...”
或
“GetPartners已完成......”
或是否发生异常:
“GetPartners方法中出现异常”
有没有解决方案?
答案 0 :(得分:7)
有几个选项可用于启用方法跟踪。
首先,您可以使用现有的PostSharp诊断模式库,只需添加和配置该库中的[Log]
属性:Adding detailed tracing。
如果您想创建自己的属性,可以在此处找到一个示例:"PostSharp.Samples.CustomLogging"。
基本上,您需要从课程OnMethodBoundaryAspect
派生并覆盖方法OnEntry
,OnExit
,OnException
来撰写您的信息。
为了获得更好的性能,您可以在编译时准备相应的消息,并在处理程序中的运行时重用它们,如示例所示:
public override void CompileTimeInitialize(MethodBase method, AspectInfo aspectInfo)
{
string methodName = method.DeclaringType.FullName + "." + method.Name;
this.enteringMessage = "Entering " + methodName;
this.exitingMessage = "Exiting " + methodName;
}