在我的 Spring Boot 应用程序中,以下设置:
logging.org.springframework.web: DEBUG
导致记录所有 HTTP 请求,这很酷!
但是,由于不断轮询 /health 端点,这会向日志文件发送垃圾邮件。如何仅为此端点禁用请求日志记录?
我推荐使用 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