在我的spring boot应用程序中,设置如下:
logging.org.springframework.web: DEBUG
导致记录所有http请求,这很酷!但是,由于不断轮询/health端点,这会对日志文件进行垃圾处理。如何仅为此端点禁用请求日志记录?
tvokkenx1#
我建议使用spring内置的请求日志过滤器 CommonsRequestLoggingFilter .要启用日志过滤器,需要设置属性:
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 :
application.properties
logging.level.<package_name>.RequestLoggingFilter=DEBUG
1条答案
按热度按时间tvokkenx1#
我建议使用spring内置的请求日志过滤器
CommonsRequestLoggingFilter
.要启用日志过滤器,需要设置属性:
但当您需要指定用于启用日志记录的自定义规则时,可以通过以下方式创建自定义实现:
要启用过滤器,请将以下配置属性添加到
application.properties
: