打印全部请求消息和返回内容

lifuquan 03f547ce3f v1.0 20230525 1 anno fa
src 03f547ce3f v1.0 20230525 1 anno fa
.gitignore 03f547ce3f v1.0 20230525 1 anno fa
README.md 03f547ce3f v1.0 20230525 1 anno fa
pom.xml 03f547ce3f v1.0 20230525 1 anno fa

README.md

request-log-interceptor-starter

添加拦截器,打印所有的请求和返回值。

使用方式

1. 引入依赖

<dependency>
    <groupId>com.nokia</groupId>
    <artifactId>request-log-interceptor-starter</artifactId>
    <version>1.0</version>
</dependency>

2. 注入拦截器

  • 自行注入方式

    // 引入配置类
    @Configuration
    public class RequestLogConfiguration implements WebMvcConfigurer {
    
    /**
     * 添加拦截器
     */
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        // 添加日志拦截器
        registry.addInterceptor(new RequestLogHandlerInterceptor()).addPathPatterns("/**");
    }
    
    /**
     * 注入自定义的RequestLogDispatcherServlet替代默认的DispatcherServlet
     */
    @Bean
    @Qualifier(DispatcherServletAutoConfiguration.DEFAULT_DISPATCHER_SERVLET_BEAN_NAME)
    public DispatcherServlet dispatcherServlet() {
        return new RequestLogDispatcherServlet();
    }
    
    }
    
  • 配置方式(不推荐)

    request:
    log:
    enable: true
    spring:
    main:
    allow-bean-definition-overriding: true
    

注意,这里需要打开配置spring.main.allow-bean-definition-overriding=true,允许覆盖springbean,这样才能实现使用starter注入的DispatcherServlet替代默认的。这不是一种安全的做法,因此不建议使用。

版本更新记录

v1.0

  1. 实现了打印日志的功能,日志样式如下:

    2023-05-25 18:26:44.649  INFO 9520 --- [nio-8080-exec-1] c.n.r.i.RequestLogHandlerInterceptor     : 请求地址: http://127.0.0.1:8080/test POST,请求头: {content-length=0, host=127.0.0.1:8080, content-type=application/json, connection=close, accept-encoding=gzip, deflate, user-agent=vscode-restclient},请求参数:
    2023-05-25 18:26:44.667  INFO 9520 --- [nio-8080-exec-1] c.n.r.i.RequestLogHandlerInterceptor     : 耗时 18 ms, 返回 200: ===