如何限制HttpTraceFilter路径?

时间:2018-07-30 14:39:59

标签: spring spring-boot spring-boot-actuator

我正在使用spring-actuator,并希望限制跟踪请求/响应日志记录的路径。尝试如下,但仍将所有调用的路径记录到http://localhost:8080/actuator/httptrace

@Bean
@ConditionalOnBean(HttpTraceFilter.class)
public FilterRegistrationBean traceFilterRegistration(HttpTraceFilter filter) {
    FilterRegistrationBean registration = new FilterRegistrationBean(filter);
    registration.setUrlPatterns("/test/*"));
    return registration;
}

在httptrace端点中,我仍然看到对http://localhost:8080/actuator/mappingshttp://localhost:8080/favicon.ico的请求。但是由于我的映射网址格式,这些应该隐藏了,不是吗?

旁注:我注意到当省略@ConditionalOnBean时,它在受限路径下可以正常工作。可能与跟踪过滤器的初始化顺序有关。

1 个答案:

答案 0 :(得分:0)

要根据您的要求拦截请求,您可以这样操作:

import org.springframework.web.servlet.HandlerInterceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class CustomInterceptor implements HandlerInterceptor{

@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler){
    //your custom logic here.
    return true;
}
}

然后在此处注册以拦截所需的路径:

@Configuration
@EnableWebMvc
public class WebMvcConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry){
    registry.addInterceptor(new 
CustomInterceptor()).addPathPatterns("/actuator/**","/test/**");
}
}