我想实现下面这样一个功能,但是一时没有思路:当我一个用户登录进系统以后,我想记录这个当前用户在系统中做的所有操作,如删除资源,登录,修改权限等,(不要说在每个地方都写一段语句插入日志哦,那样维护太麻烦啦)

解决方案 »

  1.   

    楼上的朋友能说得详细一点嘛
    aop如何实现
      

  2.   

    切面:
    package com.hundsun.fund.website.webapp.log;import org.apache.log4j.Logger;
    import org.aspectj.lang.ProceedingJoinPoint;public class UserOprationLog { protected Logger logger = Logger.getLogger("WEBAPP");

    public void userLog(ProceedingJoinPoint pjp){
    Object obj[] = pjp.getArgs();
    String paremeters = "";
    for(int i = 0; i < obj.length; i++){
    paremeters += obj[i].toString() + ",";
    }
    if("addUser".equals(pjp.getSignature().getName())){
    logger.info("添加用户:" + pjp.getSignature().getName() + "(" +paremeters + ")");
    }
    //System.out.println("user action");
    }

    }applicationContext.xml:
    <!-- 配置日志AOP begin -->
    <bean id="userLog" class="com.hundsun.fund.website.webapp.log.UserOprationLog" />
    <bean id="systemLog" class="com.hundsun.fund.website.webapp.log.SysExceptionLog" />
    <aop:config proxy-target-class="true">
    <!-- 用户操作日志切面  -->
    <aop:aspect ref="userLog" id="userLogAspect">
    <aop:pointcut id="userLogPointcut" expression="execution(* com.hundsun.fund.website.webapp.dao.user.*.*(..))"/>
    <aop:after-returning pointcut-ref="userLogPointcut" method="userLog" />
    </aop:aspect>
    <!-- 系统异常日志切面  -->
    <aop:aspect ref="systemLog" id="systemLogAspect">
    <aop:pointcut id="systemLogPointcut" expression="execution(* com.hundsun.fund.website.webapp.dao.*.*.*(..))"/>
    <aop:after-throwing pointcut-ref="systemLogPointcut" method="systemLog" throwing="e"/>
    </aop:aspect>
    </aop:config>
    <!-- 配置日志AOP end -->参考下这个吧