Aop自定義注解生成日志
1.編寫自定義注解
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface OpetionLog {String value() default "";}
2.Controller
@PostMapping("updatestate/{id}")@ApiOperation("更改科室啟用狀態(tài)")@OpetionLog("更改科室啟用狀態(tài)")public Result updateStatus(@PathVariable Integer id) throws UnknownHostException {log.info("修改科室啟用狀態(tài)");return departmentService.updateStatus(id);}
3.切面類(控制臺(tái)日志)
@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("===================請(qǐng)求的地址是:================="+addr);log.info("===================請(qǐng)求的路徑是:================="+uri);log.info("===================請(qǐng)求的參數(shù)是:================="+ Arrays.toString(args));}@AfterReturning("haha()")public void after(){long end = System.currentTimeMillis();log.info("=================耗時(shí)================="+ (end-start));log.info("=================結(jié)束了=================");}
}
4.切面類(數(shù)據(jù)庫日志表)
@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());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);
<insert id="insertLogs">insert into logsvalues (null, #{name}, #{operation},#{time},#{addr},#{data},#{result})
</insert>
5.結(jié)果
5.1控制臺(tái)

5.2數(shù)據(jù)庫日志表
