saas-export项目-系统日志AOP

1.什么是AOP?

面向切面编程
在不改变原有代码的基础上生成动态代理类

2.适用场景

(1)日志打印
(2)事务管理
(3)权限
(4)安全

3.AOP日志管理实现

(1)配置xml,开启AOP自动代理
springmvc.xml

   <aop:aspectj-autoproxy/>

(2)编写日志切面类

//编写切面类
@Aspect//配置了aop逻辑
@Component//非Controller,Service Repository;
public class LogAspect {
    public static final Logger l= LoggerFactory.getLogger(LogAspect.class);
    public LogAspect(){
        //构造无参方法
        l.info("lOGAspect构造无参方法");
    }
    //对所有Controller方法下进行配置
    //指定包名Controller以及下的子包
    @Around(value = "execution(* com.xjj.web.Controller..*.*Controller.*(..))")
    public Object writeLog(ProceedingJoinPoint jp){//切点
        //jp表示Controller中任意的方法 toList toAdd toupdate add等
        //逻辑
       Object result=null;//返回一个表示页面的字符串,可能也是json数据
        try {
            //前置
            result=jp.proceed();
            //后置
            //报错日志
            l.info("切面writeLog"+result);
            saveSysLog(jp);
        } catch (Throwable e) {
                //异常
        }finally {
                //最终
        }
    return  result;
    }
    //request可以直接获取对方浏览器ip
    @Autowired
    HttpServletRequest request;

    @Autowired
    HttpSession session;

    @Autowired
    ISysLogService iSysLogService;
    private void saveSysLog(ProceedingJoinPoint jp){
        SysLog sysLog=new SysLog();
        //将一个表单保存在javaBean中,再将javaBean储存到数据库
        User user=(User) session.getAttribute("loginUser");
        if(user!=null){
        //设置用户登录信息
            sysLog.setUserName(user.getUserName());
            sysLog.setCompanyId(user.getCompanyId());
            sysLog.setCompanyName(user.getCompanyName());
   }//IP地址 request.getRemoteAddr()获取并请求ip地址
        sysLog.setIp(request.getRemoteAddr());
        //设置时间
        sysLog.setTime(new Date());

        //执行的方法
        sysLog.setMethod(jp.getSignature().getName());

        //类的执行名称 目标对象
        sysLog.setAction(jp.getTarget().getClass().getName());

        l.info("saveSyLog Log:"+sysLog);
        iSysLogService.saveLog(sysLog);

    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值