diff --git a/ballcat-common/ballcat-common-core/src/main/java/com/hccake/ballcat/common/core/request/wrapper/ModifyParamMapRequestWrapper.java b/ballcat-common/ballcat-common-core/src/main/java/com/hccake/ballcat/common/core/request/wrapper/ModifyParamMapRequestWrapper.java index f2b1d8bc..9c6e8464 100644 --- a/ballcat-common/ballcat-common-core/src/main/java/com/hccake/ballcat/common/core/request/wrapper/ModifyParamMapRequestWrapper.java +++ b/ballcat-common/ballcat-common-core/src/main/java/com/hccake/ballcat/common/core/request/wrapper/ModifyParamMapRequestWrapper.java @@ -12,7 +12,7 @@ import java.util.Map; */ public class ModifyParamMapRequestWrapper extends HttpServletRequestWrapper { - private Map parameterMap; + private final Map parameterMap; public ModifyParamMapRequestWrapper(HttpServletRequest request, Map parameterMap) { super(request); diff --git a/ballcat-starters/ballcat-spring-boot-starter-log/src/main/java/com/hccake/ballcat/commom/log/access/AccessLogAutoConfiguration.java b/ballcat-starters/ballcat-spring-boot-starter-log/src/main/java/com/hccake/ballcat/commom/log/access/AccessLogAutoConfiguration.java index 4880396e..92d5a9d6 100644 --- a/ballcat-starters/ballcat-spring-boot-starter-log/src/main/java/com/hccake/ballcat/commom/log/access/AccessLogAutoConfiguration.java +++ b/ballcat-starters/ballcat-spring-boot-starter-log/src/main/java/com/hccake/ballcat/commom/log/access/AccessLogAutoConfiguration.java @@ -6,6 +6,7 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication; +import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.boot.web.servlet.FilterRegistrationBean; import org.springframework.context.annotation.Bean; @@ -17,18 +18,19 @@ import org.springframework.context.annotation.Bean; @Slf4j @ConditionalOnWebApplication @RequiredArgsConstructor +@EnableConfigurationProperties(AccessLogProperties.class) public class AccessLogAutoConfiguration { private final AccessLogHandler accessLogService; + private final AccessLogProperties accessLogProperties; @Bean @ConditionalOnClass(AccessLogHandler.class) public FilterRegistrationBean accessLogFilterRegistrationBean(){ log.debug("access log 记录拦截器已开启===="); FilterRegistrationBean registrationBean = - new FilterRegistrationBean<>(new AccessLogFilter(accessLogService)); + new FilterRegistrationBean<>(new AccessLogFilter(accessLogService, accessLogProperties.getIgnoreUrlPatterns())); registrationBean.setOrder(0); return registrationBean; } - } diff --git a/ballcat-starters/ballcat-spring-boot-starter-log/src/main/java/com/hccake/ballcat/commom/log/access/AccessLogProperties.java b/ballcat-starters/ballcat-spring-boot-starter-log/src/main/java/com/hccake/ballcat/commom/log/access/AccessLogProperties.java new file mode 100644 index 00000000..c2ba28ab --- /dev/null +++ b/ballcat-starters/ballcat-spring-boot-starter-log/src/main/java/com/hccake/ballcat/commom/log/access/AccessLogProperties.java @@ -0,0 +1,22 @@ +package com.hccake.ballcat.commom.log.access; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; + +import java.util.Arrays; +import java.util.List; + +/** + * @author Hccake + * @version 1.0 + * @date 2020/6/11 14:56 + */ +@Data +@ConfigurationProperties(prefix = "ballcat.log.access") +public class AccessLogProperties { + + /** + * 忽略的Url匹配规则,Ant风格 + */ + private List ignoreUrlPatterns = Arrays.asList("/actuator/**", "/webjars/**"); +} diff --git a/ballcat-starters/ballcat-spring-boot-starter-log/src/main/java/com/hccake/ballcat/commom/log/access/filter/AccessLogFilter.java b/ballcat-starters/ballcat-spring-boot-starter-log/src/main/java/com/hccake/ballcat/commom/log/access/filter/AccessLogFilter.java index 7dda957b..09da01d8 100644 --- a/ballcat-starters/ballcat-spring-boot-starter-log/src/main/java/com/hccake/ballcat/commom/log/access/filter/AccessLogFilter.java +++ b/ballcat-starters/ballcat-spring-boot-starter-log/src/main/java/com/hccake/ballcat/commom/log/access/filter/AccessLogFilter.java @@ -1,10 +1,10 @@ package com.hccake.ballcat.commom.log.access.filter; -import cn.hutool.core.util.StrUtil; import com.hccake.ballcat.commom.log.access.handler.AccessLogHandler; import com.hccake.ballcat.commom.log.util.LogUtils; import com.hccake.ballcat.common.core.request.wrapper.RepeatBodyRequestWrapper; -import lombok.AllArgsConstructor; +import lombok.RequiredArgsConstructor; +import org.springframework.util.AntPathMatcher; import org.springframework.web.filter.OncePerRequestFilter; import javax.servlet.FilterChain; @@ -12,15 +12,22 @@ import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; +import java.util.List; /** * @author Hccake * @version 1.0 * @date 2019/10/15 21:53 */ -@AllArgsConstructor +@RequiredArgsConstructor public class AccessLogFilter extends OncePerRequestFilter { private final AccessLogHandler accessLogService; + private final List ignoreUrlPatterns; + + /** + * 针对需忽略的Url的规则匹配器 + */ + private final static AntPathMatcher ANT_PATH_MATCHER = new AntPathMatcher(); /** * Same contract as for {@code doFilter}, but guaranteed to be @@ -36,12 +43,14 @@ public class AccessLogFilter extends OncePerRequestFilter { @Override protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { - // 排除监控请求 TODO 可配置 - if (StrUtil.containsAnyIgnoreCase(request.getRequestURI(), "/actuator", "/webjars")) { - filterChain.doFilter(request, response); - return; - } - + // 跳过部分忽略 url + String requestUri = request.getRequestURI(); + for (String ignoreUrlPattern : ignoreUrlPatterns) { + if(ANT_PATH_MATCHER.match(ignoreUrlPattern, requestUri)){ + filterChain.doFilter(request, response); + return; + } + } // 包装request,以保证可以重复读取body 但不对文件上传请求body进行处理 HttpServletRequest requestWrapper; @@ -76,8 +85,4 @@ public class AccessLogFilter extends OncePerRequestFilter { } } - - - - }