文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2023-06-29 14:32

关注

这篇文章主要介绍了springboot怎么利用@Aspect实现日志工具类的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇springboot怎么利用@Aspect实现日志工具类文章都会有所收获,下面我们一起来看看吧。

一、导包

 <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@Slf4jpublic class LogAspect { @Autowiredprivate 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);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;}}

四、结果

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

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

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯