springboot日志工具类
java-zh 人气:0一、导包
<dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjrt</artifactId> <version>1.8.12</version> </dependency> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>1.9.4</version> </dependency>
二、在启动类上进行注解自动扫描
@SpringBootApplication @EnableCaching @EnableAsync @ComponentScan({"com.workorder.*"}) public class WorkOrderApplication { public static void main(String[] args) { SpringApplication.run(WorkOrderApplication.class, args); } }
三、工具类
@Aspect @Component @Slf4j public class LogAspect { @Autowired private Environment env; @Pointcut("execution(public * com.workorder..controller..*.*(..))") public void logPointCut() {} @Around("logPointCut()") public Object around(ProceedingJoinPoint point) throws Throwable { log.info("========================================="); long beginTime = System.currentTimeMillis(); //执行方法 Object result = point.proceed(); //执行时长(毫秒) long time = System.currentTimeMillis() - beginTime; //保存日志 saveSysLog(point, time); return result; } private void saveSysLog(ProceedingJoinPoint joinPoint, long time) { // 接收到请求,记录请求内容 ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); HttpServletRequest request = attributes.getRequest(); String logStr=""; if (isEnvironment("dev")){ String requestUrl = request.getRequestURL().toString() + "?"; //获取所有参数方法 Enumeration<String> enu=request.getParameterNames(); while(enu.hasMoreElements()){ String paraName = enu.nextElement(); requestUrl+=paraName + "=" + request.getParameter(paraName) + "&"; } logStr+="\r\n请求地址:"+ requestUrl.substring(0,requestUrl.length()-1); } //请求的参数 Object[] args = joinPoint.getArgs(); String params = JSONUtil.toJsonStr(args); logStr+="\r\n请求方式:"+ request.getMethod(); logStr+="\r\n请求方法Token:"+ request.getHeader("token"); logStr+="\r\n请求参数:"+ params; logStr+="\r\nIP:"+ request.getRemoteAddr(); logStr+="\r\n响应时间:"+ time+" ms"; log.info(logStr); /** * 判断当前是什么环境 * @param str * @return */ private boolean isEnvironment(String str) { boolean flag = false; String[] arr = env.getActiveProfiles(); List<String> list = Arrays.asList(arr); if (list.contains(str)) { flag = true; } return flag; } }
四、结果
加载全部内容