一 自定义注解
import java.lang.annotation.*;
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Logger {
//详情
String detail() default "";
}
二 业务逻辑
import com.example.gatewayacquisitionsystem.dto.SystemLogDTO;
import com.example.gatewayacquisitionsystem.service.SystemLogService;
import io.swagger.annotations.ApiOperation;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.*;
import org.aspectj.lang.reflect.MethodSignature;
import org.springframework.stereotype.Component;
import pro.tjkj.zauth.client.util.ZAuthContextUtil;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
@Aspect
@Component
public class LoggerAspect {
@Resource
private SystemLogService systemLogService;
@Pointcut("@annotation(Logger)")
public void loggerAspect() {
}
@After("loggerAspect()")
public void afterFilter(JoinPoint joinPoint) {
MethodSignature methodSignature = (MethodSignature) joinPoint.getSignature();
Logger logger = methodSignature.getMethod().getAnnotation(Logger.class);
ApiOperation apiOperation = methodSignature.getMethod().getAnnotation(ApiOperation.class);
HttpServletRequest httpServletRequest = ZAuthContextUtil.getRequest();
SystemLogDTO systemLogDTO = new SystemLogDTO();
systemLogDTO.setCreateDate(System.currentTimeMillis());//创建事件
systemLogDTO.setMsg(apiOperation.value());//操作内容
systemLogDTO.setRequestUrl(httpServletRequest.getRequestURL().toString());//请求url
systemLogDTO.setRequestMode(httpServletRequest.getMethod());//请求方式
systemLogService.insert(systemLogDTO);
System.out.println("=========================start================================");
System.out.println(httpServletRequest.getRequestURL());
System.out.println(apiOperation.value());
System.out.println(ZAuthContextUtil.getToken());
System.out.println(httpServletRequest.getMethod());
System.out.println(methodSignature.getMethod().getName());
System.out.println(logger.detail());
}
}
三 实现类产生日志保存用下面方法