0

在我的 Spring Boot 应用程序中,以下设置:

logging.org.springframework.web: DEBUG

导致记录所有 HTTP 请求,这很酷!

但是,由于不断轮询 /health 端点,这会向日志文件发送垃圾邮件。如何仅为此端点禁用请求日志记录?

4

1 回答 1

1

我推荐使用 Spring Built-In request logging filter CommonsRequestLoggingFilter

要启用日志过滤器,您需要设置属性:

logging.level.org.springframework.web.filter.CommonsRequestLoggingFilter=DEBUG

但是当您需要指定启用日志记录的自定义规则时,您可以通过以下方式创建自定义实现:

@Component
public class RequestLoggingFilter extends AbstractRequestLoggingFilter {

    private Set<String> excludedUrls = Set.of("/health");

    @Override
    protected boolean shouldLog(HttpServletRequest request) {
        if(excludedUrls.contains(request.getRequestURI())) {
            return false;
        }
        return logger.isDebugEnabled();
    }

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

    @Override
    protected void afterRequest(HttpServletRequest request, String message) {
        logger.debug(message);
    }
}

并启用过滤器将以下配置属性添加到application.properties

logging.level.<package_name>.RequestLoggingFilter=DEBUG
于 2021-07-08T22:43:59.570 回答