如何使用Spring AOP的Aspect进行非常复杂的审计日志记录?

时间:2015-11-12 23:07:46

标签: spring aop aspectj spring-aspects

我正在构建一个Spring Web应用程序。使用Spring AOP的方面来进行审计日志记录。

我使用以下方法获得了商务课程,我希望在某些情况下审核日志

  • 在方法执行期间
  • 方法返回后
  • @Aspect  
    public class MyBusinessClass {...
    
    public void registerUser() {  
           // do some business logic here...  
          userId = // userService.saveUser(...).getId(); // etc...  
          if(successful) {  
              // then send Email notification  
             audit.log(userId, "success sending email notification"... some other params);  
          else {
              audit.log(userId, "fail to send email notification"...);  
          }  
          //do some more logic before returning method  
          audit.log(userId,"successfully registered user...." ...);  
          ..// method returns   
          }
    

我已经在一个单独的课程中定义了Aspects。

我遇到了问题,因为我在这里和其他文章中看到的所有常见的简单例子似乎都非常简单。例如,它们很容易运作,因为我看到的最复杂的只是将方法参数提取到方面的建议中。

但我的问题是,我不知道不仅仅是将局部变量提取到Aspect的建议中,而是根据某些条件不止一次地进行审计记录。

不要误解我的意思,我们已经让Log4j登录到相同位置的日志文件,但我们也要求对DB进行这些审核日志记录。

我只是想知道什么是解决方案,以达到我想要的高水平。

为稍微差的代码格式化道歉......(它主要是伪代码)。 我无法在StackOverflow上使用此代码格式化。它在Github降价方面要容易得多。

0 个答案:

没有答案