如何在类上实现自定义LogAttribute

时间:2012-03-17 12:08:36

标签: c# logging aop

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

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

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

我已阅读有关IMessageSync的信息,但它会影响性能。

在MVC中,我们得到CustomFilters,其中我们可以使用LogActionHandler,它将在每个Action方法的开头和结尾执行。我想在ASP.Net web Form中实现类似的功能。

任何人都可以通过提供一些示例代码来帮助我。

1 个答案:

答案 0 :(得分:2)

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

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

亲:这是免费的

Con:它需要Unity / DI / IoC模式。 你的班级需要有一个界面或虚拟方法。

不幸的是,对于ASP.NET控件来说并非如此。 因此,此方法仅适用于您的自定义类: 见Intercept Unity 2.0 HandlerAttribute without an interface