在上一篇中介绍的是AOP的日志拦截配置,继续做的是如何正确配置拦截信息
首先,定义一个注解信息以及需要的参数
@Target({ ElementType.METHOD })
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
public @interface logAnnotation {
/**
* @param 模块名字
*/
String modelName();
/**
* @param 操作内容描述
*/
String option();
/**
* @param TerminalConstantClass.SYS__OPTIONLEVEL_0 = "common"(一般操作,记录保留时间短)
* @param TerminalConstantClass.SYS__OPTIONLEVEL_1 = "sensitive"(敏感操作,记录保留时间长)
*/
String optionLevel();
}
同时在定义的切面类指定切入点
@Pointcut(value = "within(com.ustcinfo.fccos.terminal.web..*) && @annotation(com.ustcinfo.fccos.terminal.web.AOP.logAnnotation)")
public void operationLogcontrollerAspect() {
}
代表的是web目录下所有子文件夹注解类型为logAnnotation 均是切入点
定义切入点行为
@Before(value = "operationLogcontrollerAspect() && @annotation(log)")
public void doBefore(JoinPoint joinPoint,logAnnotation log) {
System.out.println("****************");
try {
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
String ip = request.getRemoteAddr();
HttpSession session = request.getSession();
LoginUserRightsModel loginUser = getLoginInfos(session);
String userId = loginUser.getUserId();
System.out.println(joinPoint.getSignature().getName());
System.out.println(log.option());
System.out.println("目标方法内的参数为" + Arrays.asList(joinPoint.getArgs()));
} catch (Exception e) {
e.printStackTrace();
logger.error("记录操作日志发生异常:\n" + e.getMessage());
}
}
joinPoint.getArgs()---------获取请求的入参信息
log.option()--------获取注解自定义属性中的 option内容
joinPoint.getSignature().getName()-----获取注解的方法名。。。。。
2018-05-09 14:22:16.101 INFO [MyFilter] 当前admin用户id:3--3
2018-05-09 14:22:16.102 INFO [MyFilter] 查找权限信息
2018-05-09 14:22:16.109 INFO [MyFilter] 找到对应的权限配置信息,admin--[LoginUserRightsModel [userId=admin, isGodownManage=false, proviceCode=80001, cityName=安徽省, cityCode=80001, countyName=null, countyCode=80001, godownCodeM=null, godownNameM=null, godownLevelM=null, godownTypeM=null, level=省级, godownDpt=null]]
****************
getInstallerInfos
查询具体装维的归属信息
目标方法内的参数为[AA150]
2018-05-09 14:22:16.185 DEBUG [getInfosByuserId] ==> Preparing: SELECT `user_id`,`user_name`,`region_id`,`region_name`,`county_id`,`county_name`,`potrolgroup_id`,`potrolgroup_name` FROM device2.`tb_usrgrp_rela` WHERE `user_id`=?
2018-05-09 14:22:16.213 DEBUG [getInfosByuserId] ==> Parameters: AA150(String)
2018-05-09 14:22:16.253 DEBUG [getInfosByuserId] <== Total: 1
以上是切面日志信息