首页  编辑  

SpringBoot日志过滤器

Tags: /Java/   Date Created:
Spring Boot 为日志有效载荷提供了内置解决方案。AbstractRequestLoggingFilter 是一个提供日志记录基本功能的过滤器。子类应覆盖 beforeRequest() 和 afterRequest() 方法,以围绕请求执行实际日志记录。Spring Boot 框架提供了三个具体实现类,我们可以用它们来记录传入的请求:
  • CommonsRequestLoggingFilter
  • Log4jNestedDiagnosticContextFilter (过时,弃用)
  • ServletContextRequestLoggingFilter
其中,第一个和第三个差不多,我们这里只介绍第一个的具体使用
@Configuration
public class RequestLoggingConfig {

  @Bean
  public CommonsRequestLoggingFilter logFilter() {
    CommonsRequestLoggingFilter filter = new CommonsRequestLoggingFilter();
    // 是否记录请求的查询参数信息
    filter.setIncludeQueryString(true) ;
    // 是否记录请求body内容
    filter.setIncludePayload(true) ;
    // 是否记录请求header信息
    filter.setIncludeHeaders(true) ;
    // 是否记录请求客户端信息
    filter.setIncludeClientInfo(true) ;
    // 设置日期记录的前缀
    filter.setAfterMessagePrefix("REQUEST DATA: ") ;
    return filter ;
  }
}
这里直接通过@Bean的方式配置Filter,你也可以通过@WebFilter方式,有针对的进行记录请求日志。而上面的过滤器将会对所有的请求进行拦截记录。

配置日志
logging.level.org.springframework.web.filter.CommonsRequestLoggingFilter=DEBUG
请求接口
@PostMapping("")
public Article save(@RequestBody Article article) {
  return article ;
}
请求上面的接口,控制台日志输出如下:

详细记录了请求的所有内容。还有其它的配置,你可查看具体的API。