栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

springboot利用@Aspect实现日志工具类

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

springboot利用@Aspect实现日志工具类

一、导包
  
    org.aspectj
    aspectjrt
    1.8.12
  
  
    org.aspectj
    aspectjweaver
    1.9.4
   
一、在启动类上进行注解自动扫描
@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 enu=request.getParameterNames();
	        while(enu.hasMoreElements()){
		        String paraName = enu.nextElement();
		        requestUrl+=paraName + "=" + request.getParameter(paraName) + "&";
	        }
	        logStr+="rn请求地址:"+ requestUrl.substring(0,requestUrl.length()-1);
        }
	    //请求的参数
	    Object[] args = joinPoint.getArgs();
	    String params = JSONUtil.toJsonStr(args);

        logStr+="rn请求方式:"+ request.getMethod();
	    logStr+="rn请求方法Token:"+ request.getHeader("token");
	    logStr+="rn请求参数:"+  params;
	    logStr+="rnIP:"+ request.getRemoteAddr();
        logStr+="rn响应时间:"+  time+" ms";
        log.info(logStr);
    }

	
	private boolean isEnvironment(String str) {
		boolean flag = false;
		String[] arr = env.getActiveProfiles();
		List list = Arrays.asList(arr);
		if (list.contains(str)) {
			flag = true;
		}
		return flag;
	}
}
四、结果

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/775086.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号