如何从基于OnMethodBoundaryAspect的日志中排除?

时间:2013-03-19 14:05:34

标签: c# c#-4.0 postsharp aop

我有这个记录器:

[Serializable]
[AttributeUsage(AttributeTargets.All)]
public class MethodsInterceptAspect : OnMethodBoundaryAspect {
    public override void OnEntry(MethodExecutionArgs args) { Logger.LogMethodEntry(args.Method, DateTime.Now); }
    public override void OnExit(MethodExecutionArgs args) { Logger.LogMethodExit(args.Method, DateTime.Now); }
}

但是有一个强大的功能(许多嵌套循环,性能关键)也会使日志膨胀。如何排除它及其所有子程序?

1 个答案:

答案 0 :(得分:2)

您可以使用方面的AttributeExclude=true属性执行此操作。排除可以在汇编级别应用

[assembly: Trace("Business", AttributeTargetTypes="BusinessLayer.*", AttributePriority = 1)]
[assembly: Trace(AttributeTargetMembers="Dispose", AttributeExclude = true, AttributePriority = 2)]

或按方法

[assembly: Trace("Business", AttributeTargetTypes="BusinessLayer.*")]
namespace BusinessLayer
{
  public class Process : IDisposable
  {
   public Customer Create(string value) { ... }
   public void Delete(long id) { ... }

   [Trace(AttributeExclude=true)]
   public void Dispose() { ... }
  }
}

A more complete answer can be found here