如何在JavaSpring中排除某些http请求(例如/HealthEndpoint)

moiiocjp  于 2021-08-25  发布在  Java
关注(0)|答案(1)|浏览(494)

在我的spring boot应用程序中,设置如下:

  1. logging.org.springframework.web: DEBUG

导致记录所有http请求,这很酷!
但是,由于不断轮询/health端点,这会对日志文件进行垃圾处理。如何仅为此端点禁用请求日志记录?

tvokkenx

tvokkenx1#

我建议使用spring内置的请求日志过滤器 CommonsRequestLoggingFilter .
要启用日志过滤器,需要设置属性:

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

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

  1. @Component
  2. public class RequestLoggingFilter extends AbstractRequestLoggingFilter {
  3. private Set<String> excludedUrls = Set.of("/health");
  4. @Override
  5. protected boolean shouldLog(HttpServletRequest request) {
  6. if(excludedUrls.contains(request.getRequestURI())) {
  7. return false;
  8. }
  9. return logger.isDebugEnabled();
  10. }
  11. @Override
  12. protected void beforeRequest(HttpServletRequest request, String message) {
  13. logger.debug(message);
  14. }
  15. @Override
  16. protected void afterRequest(HttpServletRequest request, String message) {
  17. logger.debug(message);
  18. }
  19. }

要启用过滤器,请将以下配置属性添加到 application.properties :

  1. logging.level.<package_name>.RequestLoggingFilter=DEBUG
展开查看全部

相关问题