微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 Java Spring 中排除某些 HTTP 请求例如 /health Endpoint

如何解决如何在 Java Spring 中排除某些 HTTP 请求例如 /health Endpoint

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

logging.org.springframework.web: DEBUG

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

然而,随着 /health 端点不断被轮询,这会向日志文件发送垃圾邮件。 如何仅为此端点禁用请求日志记录?

解决方法

我建议使用 Spring 内置请求日志过滤器 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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。