3

私はこのロガーを持っています:

[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); }
}

しかし、ログを肥大化させる集中的な機能 (多くのネストされたループ、パフォーマンスが重要) があります。それとそのすべてのサブルーチンを除外するにはどうすればよいですか?

4

1 に答える 1

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() { ... }
  }
}

より完全な答えはここにあります

于 2013-03-21T09:53:03.620 に答える