如何在类上实现自定义LogAttribute

本文关键字:实现 自定义 LogAttribute | 更新日期: 2023-09-27 18:28:18

我想实现自定义LogAttribute,它将在类中每个方法的开头和结尾记录信息,还应该记录错误。我想将属性应用于类。

我看过PostSharp。但我希望拥有自己的自定义日志属性,而不是使用PostSharp或类似的库。

性能是关键,LogAttribute不应影响性能。

我读过IMessageSync,但它会影响性能。

在MVC中,我们得到了CustomFilters,其中我们可以有LogActionHandler,它将在每个Action方法的开始和结束时执行。我想在ASP.NetWebForm.中实现类似的功能

有人能帮我提供一些示例代码吗。

如何在类上实现自定义LogAttribute

Unity-微软的IoC/依赖注入容器也允许方法拦截。

下面是一个"DiagnosticsInterceptor"的示例,它可以根据您的需要执行相同的操作:http://hmadrigal.wordpress.com/2010/12/25/aspect-oriented-programming-and-interceptor-design-pattern-with-unity-2/

Pro:这是免费的

缺点:它需要Unity/DI/IoC模式。你的类需要有一个接口,或者一个虚拟方法。

不幸的是,ASP.NET控件的情况并非如此。因此,此方法只适用于您的自定义类:请参阅Intercept Unity 2.0 HandlerAttribute(无接口)