Commit 31866671 authored by jiaorz's avatar jiaorz

网关日志限制修改

parent aa0b9aba
...@@ -54,7 +54,7 @@ import java.util.stream.Stream; ...@@ -54,7 +54,7 @@ import java.util.stream.Stream;
*/ */
@Configuration @Configuration
@Slf4j @Slf4j
public class AccessGatewayFilter implements GlobalFilter{ public class AccessGatewayFilter implements GlobalFilter {
@Autowired @Autowired
@Lazy @Lazy
private IUserService userService; private IUserService userService;
...@@ -113,8 +113,8 @@ public class AccessGatewayFilter implements GlobalFilter{ ...@@ -113,8 +113,8 @@ public class AccessGatewayFilter implements GlobalFilter{
// IJWTInfo user = null; // IJWTInfo user = null;
// try { // try {
// user = getJWTUser(request, mutate); // user = getJWTUser(request, mutate);
// 申请客户端密钥头 // 申请客户端密钥头
mutate.header(serviceAuthConfig.getTokenHeader(), serviceAuthUtil.getClientToken()); mutate.header(serviceAuthConfig.getTokenHeader(), serviceAuthUtil.getClientToken());
// } catch (Exception e) { // } catch (Exception e) {
// log.info("调用免登陆接口的用户Token过期异常", e); // log.info("调用免登陆接口的用户Token过期异常", e);
// } // }
...@@ -257,7 +257,7 @@ public class AccessGatewayFilter implements GlobalFilter{ ...@@ -257,7 +257,7 @@ public class AccessGatewayFilter implements GlobalFilter{
private boolean isStartWith(String requestUri) { private boolean isStartWith(String requestUri) {
boolean flag = false; boolean flag = false;
for (String s : GATE_WAY_UNAUTH.split(",")) { for (String s : GATE_WAY_UNAUTH.split(",")) {
if(requestUri.contains(s)) { if (requestUri.contains(s)) {
return true; return true;
} }
} }
...@@ -281,12 +281,12 @@ public class AccessGatewayFilter implements GlobalFilter{ ...@@ -281,12 +281,12 @@ public class AccessGatewayFilter implements GlobalFilter{
} }
public void setLogService(ServerWebExchange exchange, GatewayFilterChain chain) { public void setLogService(ServerWebExchange exchange, GatewayFilterChain chain) {
MediaType mediaType = exchange.getRequest().getHeaders().getContentType(); MediaType mediaType = exchange.getRequest().getHeaders().getContentType();
ServerRequest serverRequest = new DefaultServerRequest(exchange); ServerRequest serverRequest = new DefaultServerRequest(exchange);
// 如果是json格式,将body内容转化为object or map 都可 // 如果是json格式,将body内容转化为object or map 都可
if (MediaType.APPLICATION_JSON.isCompatibleWith(mediaType)){ if (MediaType.APPLICATION_JSON.isCompatibleWith(mediaType)) {
Mono<Object> modifiedBody = serverRequest.bodyToMono(Object.class) Mono<Object> modifiedBody = serverRequest.bodyToMono(Object.class)
.flatMap(body -> { .flatMap(body -> {
recordLog(exchange.getRequest(), body); recordLog(exchange.getRequest(), body);
...@@ -295,7 +295,7 @@ public class AccessGatewayFilter implements GlobalFilter{ ...@@ -295,7 +295,7 @@ public class AccessGatewayFilter implements GlobalFilter{
} }
// 如果是表单请求 // 如果是表单请求
else if(MediaType.APPLICATION_FORM_URLENCODED.isCompatibleWith(mediaType)){ else if (MediaType.APPLICATION_FORM_URLENCODED.isCompatibleWith(mediaType)) {
Mono<String> modifiedBody = serverRequest.bodyToMono(String.class) Mono<String> modifiedBody = serverRequest.bodyToMono(String.class)
// .log("modify_request_mono", Level.INFO) // .log("modify_request_mono", Level.INFO)
.flatMap(body -> { .flatMap(body -> {
...@@ -310,36 +310,43 @@ public class AccessGatewayFilter implements GlobalFilter{ ...@@ -310,36 +310,43 @@ public class AccessGatewayFilter implements GlobalFilter{
// 无法兼容的请求,则不读取body,像Get请求这种 // 无法兼容的请求,则不读取body,像Get请求这种
recordLog(exchange.getRequest(), ""); recordLog(exchange.getRequest(), "");
} }
private void recordLog(ServerHttpRequest request, Object body) { private void recordLog(ServerHttpRequest request, Object body) {
// 记录要访问的url // 记录要访问的url
StringBuilder builder = new StringBuilder(); if (!getNotLogUri().contains(request.getURI().getRawPath())) {
log.info("=================请求uri:" + request.getURI().getRawPath()); StringBuilder builder = new StringBuilder();
// 记录访问的方法 log.info("=================请求uri:" + request.getURI().getRawPath());
HttpMethod method = request.getMethod(); // 记录访问的方法
if (null != method){ HttpMethod method = request.getMethod();
log.info("=================请求方法:" + method.name()); if (null != method) {
} log.info("=================请求方法:" + method.name());
// 记录头部信息
builder.append(", header { ");
for (Map.Entry<String, List<String>> entry : request.getHeaders().entrySet()) {
builder.append(entry.getKey()).append(":").append(StringUtils.join(entry.getValue(), ",")).append(",");
}
log.info("=================请求头header:" + builder.toString());
// 记录参数
builder = new StringBuilder();
// 处理get的请求
if (null != method && HttpMethod.GET.matches(method.name())) {
// 记录请求的参数信息 针对GET 请求
MultiValueMap<String, String> queryParams = request.getQueryParams();
for (Map.Entry<String, List<String>> entry : queryParams.entrySet()) {
builder.append(entry.getKey()).append("=").append(StringUtils.join(entry.getValue(), ",")).append(",");
} }
// 记录头部信息
builder.append(", header { ");
for (Map.Entry<String, List<String>> entry : request.getHeaders().entrySet()) {
builder.append(entry.getKey()).append(":").append(StringUtils.join(entry.getValue(), ",")).append(",");
}
log.info("=================请求头header:" + builder.toString());
// 记录参数
builder = new StringBuilder();
// 处理get的请求
if (null != method && HttpMethod.GET.matches(method.name())) {
// 记录请求的参数信息 针对GET 请求
MultiValueMap<String, String> queryParams = request.getQueryParams();
for (Map.Entry<String, List<String>> entry : queryParams.entrySet()) {
builder.append(entry.getKey()).append("=").append(StringUtils.join(entry.getValue(), ",")).append(",");
}
} else {
// 从body中读取参数
builder.append(body);
}
log.info("=================请求参数:" + builder.toString());
} }
else { }
// 从body中读取参数 @Value("${logback.ignore-log-path}")
builder.append(body); String[] path;
} public List<String> getNotLogUri() {
log.info("=================请求参数:" + builder.toString()); return Arrays.asList(path);
} }
} }
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
<filter class="com.github.wxiaoqi.security.common.filter.DenyFilter"></filter> <filter class="com.github.wxiaoqi.security.common.filter.DenyFilter"></filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>${LOG_HOME}/sys.%d{yyyy-MM-dd}.log</FileNamePattern><!--日志文件输出的文件名 --> <FileNamePattern>${LOG_HOME}/sys.%d{yyyy-MM-dd}.log</FileNamePattern><!--日志文件输出的文件名 -->
<MaxHistory>30</MaxHistory><!--日志文件保留天数 --> <MaxHistory>15</MaxHistory><!--日志文件保留天数 -->
</rollingPolicy> </rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<Pattern>${CONSOLE_LOG_PATTERN}</Pattern><!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 --> <Pattern>${CONSOLE_LOG_PATTERN}</Pattern><!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
...@@ -33,7 +33,7 @@ ...@@ -33,7 +33,7 @@
<filter class="com.github.wxiaoqi.security.common.filter.AcceptFilter"></filter> <filter class="com.github.wxiaoqi.security.common.filter.AcceptFilter"></filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>${LOG_HOME}/log.%d{yyyy-MM-dd}.log</FileNamePattern><!--日志文件输出的文件名 --> <FileNamePattern>${LOG_HOME}/log.%d{yyyy-MM-dd}.log</FileNamePattern><!--日志文件输出的文件名 -->
<MaxHistory>30</MaxHistory><!--日志文件保留天数 --> <MaxHistory>15</MaxHistory><!--日志文件保留天数 -->
</rollingPolicy> </rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<Pattern>${CONSOLE_LOG_PATTERN}</Pattern><!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 --> <Pattern>${CONSOLE_LOG_PATTERN}</Pattern><!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment