# request-log-interceptor-starter

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

## 使用方式

### 1. 引入依赖

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

### 2. 注入拦截器

- 自行注入方式

```java
// 引入配置类
@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();
    }

}
```

- 配置方式(不推荐)

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

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

## 版本更新记录

### v1.0

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

```text
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: ===
```