java - 在 Spring Boot 中记录请求负载

标签 java spring spring-boot spring-restcontroller

我们如何在 spring boot 应用程序的过滤器中记录处理前后的请求负载/参数。

例如:

/api/users/auth Body: `name:Vijay, place:bangalore...`

我必须在处理请求之前和之后在过滤器中记录请求主体。

最佳答案

Spring Boot 为此提供了 CommonsRequestLoggingFilter

你可以这样配置它:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.filter.CommonsRequestLoggingFilter;


@Configuration
public class RequestLoggingFilterConfigurer {

    @Bean
    public CommonsRequestLoggingFilter requestLoggingFilter() {
        CommonsRequestLoggingFilter filter = new CommonsRequestLoggingFilter();
        filter.setIncludeQueryString(true);
        filter.setIncludePayload(true);
        // truncate payloads
        filter.setMaxPayloadLength(1000);
        filter.setIncludeHeaders(false);
        filter.setAfterMessagePrefix("Request received: ");
        return filter;
    }
}

然后将记录器定义添加到您的 logback.xml 中,如下所示:

<logger name="org.springframework.web.filter.CommonsRequestLoggingFilter" level="DEBUG">
    <appender-ref ref="REQUEST_RESPONSE_FILE_APPENDER"/>
</logger> 

关于java - 在 Spring Boot 中记录请求负载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46291083/

相关文章:

java - 如何防止从其他网站调用我的 servlet

database - 带有数据库 : java. lang.ClassNotFoundException : org. springframework.security.core.userdetails.jdbc.JdbcDaoImpl 的 Spring Security 应用程序

Java Quartz Spring 事务支持

java - 当我使用 Spring 和 MQ Queue 发送 OBject 消息时,为什么会收到 JMSBytesMessage

mysql - Spring Boot jpa + cassandra + mysql

java - pom.xml 配置文件中的依赖项

java - 如何使用 SolrPing 检查 Solr 状态

java - Java 语言中对数组列表进行排序

java - Libgdx 和谷歌 IAP

java - 在外部 Tomcat 中部署 war 时,Springboot 端点失败