使用面向方面编程记录异常

时间:2013-06-05 18:19:26

标签: c#-4.0

我想使用AOP记录所有方法的异常。我创建了一个与以下相同的属性:

 [AttributeUsage(AttributeTargets.All)]
 public class ClsLogger : System.Attribute
 {
    private string _exMsg;
    public ClsLogger(string exMsg)
    {
        //
        // TODO: Add constructor logic here
        //
        _exMsg = exMsg;
        LogError();
    }
    public void LogError()
    {
        // This methods logs exception
        // Log Exception
    }
}

最后,我想使用此日志记录属性来记录我的应用程序方法的异常消息。我如何将异常消息传递给atrribute,因为它不是一个固定的字符串但是很糟糕? 有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

C#中的属性在您调用GetCustomAttributes之前不会实例化,并且每次执行时都会实例化(see this question此处为SO)。

如果您想使用AOP(如标题所示),那么您需要使用一些框架,例如PostSharpFodySheepAspect等。

如果您使用的是ASP.NET MVC,那么您还可以使用内置的ActionFilter类,但仅限于Controller方法。