SpringBoot 整合ApiBoot Logging 实现监控打印接口的请求日志

文章介绍了如何在SpringBoot项目中集成ApiBootLogging,配置日志组件,使用@EnableLoggingClient注解启用日志监控,以及通过接口测试验证日志打印。同时提到了如何管理和定制日志输出格式。
摘要由CSDN通过智能技术生成

org.minbox.framework

api-boot-dependencies

pom

import

${api.boot.version}

org.springframework.boot

spring-boot-maven-plugin

ApiBoot Logging 核心依赖是:

接下来是application.yml文件:

#配置项目名称

spring:

application:

name: ElegantDemo

#配置端口

server:

port: 8067

#配置ApiBoot Logging 日志组件

api:

boot:

logging:

show-console-log: true

#实现美化打印请求日志

format-console-log-json: true

这里有一点需要提醒下, 里面的配置项目名称和端口是有必要的,因为ApiBoot 在监控每次请求的数据输出时,里面包括了项目名称和端口。

然后是在启动类上加上注解 @EnableLoggingClient :

可以看到这个注解,Client ,客户端,没错,这个其实也有对应的admin端进行日志上报,但是目前实现对接口请求的日志监控打印,我们只需要使用客户端组件即可。

接下来,我们来简单编写几个接口,作为测试,LoggingApiTestController.java:

import com.demo.elegant.pojo.Cat;

import org.springframework.web.bind.annotation.*;

import java.util.Map;

/**

  • @Author : JCccc

  • @CreateTime : 2019/11/25

  • @Description :

**/

@RestController

public class LoggingApiTestController {

@GetMapping(“/testGet1”)

public String testGet1(@RequestParam(“name”) String name, @RequestParam(“age”) Integer age) {

return “testGet1: name is “+ name+” and age is :”+age;

}

@GetMapping(“/testGet2”)

public String testGet2(@RequestParam Map paramMap) {

return “testGet2: name is “+ paramMap.get(“name”)+” and age is :”+paramMap.get(“age”);

}

@PostMapping(“/testPost1”)

public String testPost1(@RequestBody Cat cat) {

return “testPost1: name is “+ cat.getName()+” and age is :”+cat.getAge();

}

@PostMapping(“/testPost2”)

public String testPost2(@RequestBody Map paramMap) {

return “testPost2: name is “+ paramMap.get(“name”)+” and age is :”+paramMap.get(“age”);

}

}

这里其中一个post方法用到了实体类接收参数,顺便也贴一下 Cat.java:

PS: 可以参考我这篇,了解各种springboot拿参方式(https://blog.csdn.net/qq_35387940/article/details/100151992

import lombok.Data;

/**

  • @Author : JCccc

  • @CreateTime : 2019/11/25

  • @Description :

**/

@Data

public class Cat {

private String name;

private Integer age;

}

ok,我们用postman先来调用 ‘/testGet1’ 接口:

可以看到控制台:

红色框里面正是这次请求的所有数据,都成功监控打印了。

蓝色框是啥呢,就是前面说的admin组件,我们这里不需要用到admin,所以会有提示说这个日志监控报告没有找到对应的admin服务,没有影响,直接无视就好。

其余接口就不一一调用了,效果都是一样的。

如果觉得这个日志打印下来占行数太多了,那么可以在application.yml里面,将json格式化给设置为false,默认不设置也是false:

设置格式化为false:

到这里,其实已经完了,但是我个人有点强迫症,我不想看到那个warn日志,所以稍微操作一哈。

那么我这里简单使用下logback日志框架,顺便对日志文件输出都进行统一性管理:

新建logback.xml,直接放到resources文件夹下(一般的项目想整合logback框架,基本保留这份xml就够用了,拿来即用):

<?xml version="1.0" encoding="UTF-8"?>

1-%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger - %msg%n

GBK

L O G P A T H / {LOG_PATH}/ LOGPATH/{APPDIR}/log_error.log

L O G P A T H / {LOG_PATH}/ LOGPATH/{APPDIR}/error/log-error-%d{yyyy-MM-dd}.%i.log

500MB

true

%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger Line:%-3L - %msg%n

utf-8

error

ACCEPT

DENY

L O G P A T H / {LOG_PATH}/ LOGPATH/{APPDIR}/log_warn.log

L O G P A T H / {LOG_PATH}/ LOGPATH/{APPDIR}/warn/log-warn-%d{yyyy-MM-dd}.%i.log

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

总结

总的来说,面试是有套路的,一面基础,二面架构,三面个人。

最后,小编这里收集整理了一些资料,其中包括面试题(含答案)、书籍、视频等。希望也能帮助想进大厂的朋友

三面蚂蚁金服成功拿到offer后,他说他累了

三面蚂蚁金服成功拿到offer后,他说他累了

《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门即可获取!
并且会持续更新!**

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

总结

总的来说,面试是有套路的,一面基础,二面架构,三面个人。

最后,小编这里收集整理了一些资料,其中包括面试题(含答案)、书籍、视频等。希望也能帮助想进大厂的朋友

[外链图片转存中…(img-LOCCabJU-1712202360301)]

[外链图片转存中…(img-u0nCsLyK-1712202360301)]

《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门即可获取!

  • 24
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Spring Boot中,我们可以使用AOP(面向切面编程)来记录方法调用的时间。 首先,我们需要在pom.xml文件中添加Spring AOP的依赖: ``` <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </dependency> ``` 接下来,我们定义一个切面类,该类用于定义在方法调用前后要执行的逻辑。可以使用@Aspect注解来声明切面类,同时使用其他注解来指定切点和通知类型。例如,我们可以使用@Around注解来定义一个环绕通知,该通知会在方法调用前后执行: ```java @Aspect @Component public class MethodExecutionTimeAspect { private static final Logger LOGGER = LoggerFactory.getLogger(MethodExecutionTimeAspect.class); @Around("execution(* com.example.service.*.*(..))") public Object logMethodExecutionTime(ProceedingJoinPoint joinPoint) throws Throwable { long startTime = System.currentTimeMillis(); Object result = joinPoint.proceed(); long endTime = System.currentTimeMillis(); long executionTime = endTime - startTime; LOGGER.info("Method {} execution time: {} ms", joinPoint.getSignature().toShortString(), executionTime); return result; } } ``` 在上面的例子中,我们定义了一个logMethodExecutionTime方法,并将其标记为@Around注解。@Around注解的参数表示了切点表达式,这里的execution(* com.example.service.*.*(..))表示所有位于com.example.service包下的方法都会被拦截。 在logMethodExecutionTime方法中,我们使用System.currentTimeMillis()来获取方法调用的开始时间和结束时间,并计算出方法执行的时间差。然后,我们使用Logger来记录方法的执行时间。 最后,在Spring Boot的主类上添加@EnableAspectJAutoProxy注解来启用AOP功能: ```java @SpringBootApplication @EnableAspectJAutoProxy public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } ``` 通过以上步骤,我们就可以在Spring Boot中记录方法调用的时间了。每当调用标记了@Around注解的方法时,AOP切面会自动将执行时间记录到日志中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值