千家信息网

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

发表于:2025-02-02 作者:千家信息网编辑
千家信息网最后更新 2025年02月02日,这篇文章主要介绍了springboot怎么利用@Aspect实现日志工具类的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇springboot怎么利用@Aspect实现日志
千家信息网最后更新 2025年02月02日springboot怎么利用@Aspect实现日志工具类

这篇文章主要介绍了springboot怎么利用@Aspect实现日志工具类的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇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@Slf4jpublic 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+="\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 list = Arrays.asList(arr);                if (list.contains(str)) {                        flag = true;                }                return flag;        }}

四、结果

关于"springboot怎么利用@Aspect实现日志工具类"这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对"springboot怎么利用@Aspect实现日志工具类"知识都有一定的了解,大家如果还想学习更多知识,欢迎关注行业资讯频道。

0