【综合案例】aop实现日志系统

系统日志管理

记录用户的访问的Controller与ip等信息
属于监控功能
在这里插入图片描述
使用aop可以在不修改源代码的基础上给这些Controller增加日志功能。

Aop记录日志

(1)实现步骤

  1. 编写springmvc.xml, 开启Aop自动代理
	<aop:aspectj-autoproxy/>
  1. 编写日志切面类(@Aspect)
@Component
@Aspect  //
public class LogAspect {
    private Logger l = LoggerFactory.getLogger(LogAspect.class);
    @Around("execution(* com.glc.web..*Controller.*(..))")//切面
    public Object log(ProceedingJoinPoint joinPoint){//joinPoint为切点
        Object result = null;
        try {
            //前置
            result = joinPoint.proceed();//执行切面中的方法
            //后置
            //保存日志
            l.info("切面:writeLog");
            saveSysLog(joinPoint);//执行日志操作
        } catch (Throwable e) {
            //异常
        } finally {
            //最终
        }
        return result;
    }
    @Autowired
    HttpServletRequest request;
    @Autowired
    ISysLogService iSysLogService;
    public void saveSysLog(ProceedingJoinPoint joinPoint){ //获取具体的执行方法
        SysLog sysLog = new SysLog();
        sysLog.setIp(request.getRemoteAddr());
        sysLog.setMethod(joinPoint.getSignature().getName());
        sysLog.setTime(new Date());
        sysLog.setAction(joinPoint.getTarget().getClass().getName());
        l.info(sysLog+"");
        iSysLogService.saveSysLog(sysLog);//调用service写入数据库
    }

}
  1. Syslogservice实现类
@Service
public class ISysLogServiceImpl implements ISysLogService {
    @Autowired
    SysLogDao sysLogDao;
    @Override
    public void saveSysLog(SysLog sysLog) {
        sysLog.setId(UUID.randomUUID().toString());
        sysLogDao.writeLog(sysLog);
    }
}
  1. SysLogDao配置
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<!--namespace: 需要映射的Dao接口类型-->
<mapper namespace="com.glc.dao.log.SysLogDao">
    <insert id="writeLog" parameterType="sysLog">
    insert into st_sys_log
        (
        id            ,
        user_name     ,
        ip            ,
        time          ,
        method        ,
        ACTION        ,
        company_id    ,
        company_name
        )
        values
        (
        #{id            },
        #{userName      },
        #{ip            },
        #{time          },
        #{method        },
        #{action        },
        #{companyId     },
        #{companyName   }
        )
    </insert>

</mapper>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值