班级网站建设的内容,网站设计在线crm系统,百度识图查另一半情头网页版,建设部政务网站Aop自定义注解生成日志
1.编写自定义注解
//表示此注解可以标注在方法上
Target(ElementType.METHOD)
//运行时生效
Retention(RetentionPolicy.RUNTIME)
public interface OpetionLog {//定义一个变量#xff0c;可以接收参数String value() default ;}2.Cont…Aop自定义注解生成日志
1.编写自定义注解
//表示此注解可以标注在方法上
Target(ElementType.METHOD)
//运行时生效
Retention(RetentionPolicy.RUNTIME)
public interface OpetionLog {//定义一个变量可以接收参数String value() default ;}2.Controller PostMapping(updatestate/{id})ApiOperation(更改科室启用状态)OpetionLog(更改科室启用状态)public Result updateStatus(PathVariable Integer id) throws UnknownHostException {log.info(修改科室启用状态);return departmentService.updateStatus(id);}3.切面类(控制台日志)
Component
Aspect
public class ParamaterLogAop {private static Logger log Logger.getLogger(String.valueOf(ParamaterLogAop.class));private long start 0;Pointcut(execution(* com.aaa.controller.*.*(..)))//切面签名public void haha(){}Before(haha())public void before(JoinPoint point){ServletRequestAttributes requestAttributes (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();HttpServletRequest request requestAttributes.getRequest();HttpServletResponse response requestAttributes.getResponse();String addr request.getRemoteAddr();String uri request.getRequestURI();Object[] args point.getArgs();start System.currentTimeMillis();log.info(请求的地址是:addr);log.info(请求的路径是:uri);log.info(请求的参数是: Arrays.toString(args));}AfterReturning(haha())public void after(){long end System.currentTimeMillis();log.info(耗时 (end-start));log.info(结束了);}
}4.切面类(数据库日志表)
Component
Aspect
public class OptionsLogAop {Resourceprivate HttpSession httpSession;Resourceprivate LogsMapper logsMapper;AfterReturning(pointcut annotation(opetionLog), returning result)public void insertLog(JoinPoint joinPoint, OpetionLog opetionLog, Result result) throws UnknownHostException {//获取日志信息//获取当前时间String logTime new SimpleDateFormat(yyyy-MM-dd HH:mm:ss).format(new Date());//获取当前操作人ip地址String addr InetAddress.getLocalHost().getHostAddress();//获取登录人员姓名String name ((DoctorDTO)httpSession.getAttribute(doctor)).getName();//操作类型String operation opetionLog.value();//操作数据Object[] args joinPoint.getArgs();//操作结果String code result.getCode().toString();//日志对象LogsDTO logsDTO new LogsDTO(null, name, operation, logTime, addr, Arrays.toString(args), code);//插入数据库logsMapper.insertLogs(logsDTO);}
}4.1LogsDTO
Data
AllArgsConstructor
NoArgsConstructor
public class LogsDTO implements Serializable {private static final long serialVersionUID -28616532886171515L;private Integer id;private String name;private String operation;private String time;private String addr;private String data;private String result;
}4.2LogsMapper
int insertLogs(LogsDTO logsDTO);//Logsmapper.xml
insert idinsertLogsinsert into logsvalues (null, #{name}, #{operation},#{time},#{addr},#{data},#{result})
/insert5.结果
5.1控制台 5.2数据库日志表