首页 > 解决方案 > 仅在 Spring Boot 中的请求日志之前设置 CommonsRequestLoggingFilter

问题描述

CommonsRequestLoggingFilter在记录请求方面非常好,但在我的情况下,它在处理请求之前和之后记录相同的东西,这是重复和冗余的。我想摆脱请求后处理日志,但我找不到如何去做。有任何想法吗?

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

@Configuration
public class RequestLoggingFilterConfig {

    @Bean
    public CommonsRequestLoggingFilter logFilter() {
        CommonsRequestLoggingFilter filter = new CommonsRequestLoggingFilter();
        filter.setIncludeClientInfo(true);
        filter.setIncludeHeaders(true);
        filter.setIncludePayload(false);
        filter.setIncludeQueryString(true);
        return filter;
    }
}

我从这里开始。

标签: javaspringspring-bootlogging

解决方案


org.springframework.web.filter.CommonsRequestLoggingFilter类只是 org.springframework.web.filter.AbstractRequestLoggingFilter 的子。因此跳过 CommonsRequestLoggingFilter 并编写您自己的子类并将覆盖的方法afterRequest()留空。

public class CustomizedRequestLoggingFilter extends AbstractRequestLoggingFilter {

    @Override
    protected void beforeRequest(HttpServletRequest httpServletRequest, String message) {
        this.logger.debug(message);
    }

    @Override
    protected void afterRequest(HttpServletRequest httpServletRequest, String message) {

    }
}

使用这个类而不是org.springframework.web.filter.CommonsRequestLoggingFilter


推荐阅读