我有这个记录器:
[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); }
}
但是有一个密集型函数(许多嵌套循环,对性能至关重要)也会使日志膨胀。我如何排除它及其所有子例程?
最佳答案
您可以使用方面的 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() { ... }
}
}
关于c# - 如何从基于 OnMethodBoundaryAspect 的日志记录中排除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15501707/