1. 添加请求开始时间
This commit is contained in:
parent
2a4fa24e45
commit
08f9de153f
|
|
@ -32,12 +32,10 @@ import java.util.List;
|
||||||
@Component
|
@Component
|
||||||
public class ApiLoggingFilter implements GlobalFilter, Ordered {
|
public class ApiLoggingFilter implements GlobalFilter, Ordered {
|
||||||
|
|
||||||
private static final String START_TIME = "startTime";
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
|
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
|
||||||
setTraceId(exchange);
|
setTraceId(exchange);
|
||||||
exchange.getAttributes().put(START_TIME, System.currentTimeMillis());
|
exchange.getAttributes().put(CommonConstants.START_TIME, System.currentTimeMillis());
|
||||||
return chain.filter(exchange.mutate().build()).then(Mono.fromRunnable(() -> {
|
return chain.filter(exchange.mutate().build()).then(Mono.fromRunnable(() -> {
|
||||||
ServerHttpRequest request = exchange.getRequest();
|
ServerHttpRequest request = exchange.getRequest();
|
||||||
if (log.isInfoEnabled()) {
|
if (log.isInfoEnabled()) {
|
||||||
|
|
@ -45,7 +43,7 @@ public class ApiLoggingFilter implements GlobalFilter, Ordered {
|
||||||
exchange.getRequest().getMethod().name(), exchange.getRequest().getURI().getHost(),
|
exchange.getRequest().getMethod().name(), exchange.getRequest().getURI().getHost(),
|
||||||
exchange.getRequest().getURI().getPath(), exchange.getRequest().getQueryParams());
|
exchange.getRequest().getURI().getPath(), exchange.getRequest().getQueryParams());
|
||||||
String token = request.getHeaders().getFirst(CommonConstants.HEAD_TOKEN_KEY);
|
String token = request.getHeaders().getFirst(CommonConstants.HEAD_TOKEN_KEY);
|
||||||
Long startTime = exchange.getAttribute(START_TIME);
|
Long startTime = exchange.getAttribute(CommonConstants.START_TIME);
|
||||||
if (startTime != null) {
|
if (startTime != null) {
|
||||||
Long executeTime = (System.currentTimeMillis() - startTime);
|
Long executeTime = (System.currentTimeMillis() - startTime);
|
||||||
String ip = IPUtils.clientIp(request);
|
String ip = IPUtils.clientIp(request);
|
||||||
|
|
@ -67,7 +65,6 @@ public class ApiLoggingFilter implements GlobalFilter, Ordered {
|
||||||
private void setTraceId(ServerWebExchange exchange){
|
private void setTraceId(ServerWebExchange exchange){
|
||||||
String traceId = exchange.getAttribute(CommonConstants.TRACE_ID);
|
String traceId = exchange.getAttribute(CommonConstants.TRACE_ID);
|
||||||
if (StringUtils.isEmpty(traceId)){
|
if (StringUtils.isEmpty(traceId)){
|
||||||
log.info("traceId : {}", traceId);
|
|
||||||
traceId = IdUtils.getId(32);
|
traceId = IdUtils.getId(32);
|
||||||
exchange.getAttributes().put(CommonConstants.TRACE_ID, ServletUtils.urlEncode(traceId));
|
exchange.getAttributes().put(CommonConstants.TRACE_ID, ServletUtils.urlEncode(traceId));
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -52,7 +52,6 @@ public class AuthFilter implements GlobalFilter, Ordered
|
||||||
@Override
|
@Override
|
||||||
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain)
|
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain)
|
||||||
{
|
{
|
||||||
log.info("AuthFilter start");
|
|
||||||
ServerHttpRequest request = exchange.getRequest();
|
ServerHttpRequest request = exchange.getRequest();
|
||||||
ServerHttpRequest.Builder mutate = request.mutate();
|
ServerHttpRequest.Builder mutate = request.mutate();
|
||||||
|
|
||||||
|
|
@ -67,7 +66,6 @@ public class AuthFilter implements GlobalFilter, Ordered
|
||||||
{
|
{
|
||||||
return chain.filter(exchange);
|
return chain.filter(exchange);
|
||||||
}
|
}
|
||||||
long start = System.currentTimeMillis();
|
|
||||||
String token = getToken(request, newPath);
|
String token = getToken(request, newPath);
|
||||||
if (StringUtils.isEmpty(token))
|
if (StringUtils.isEmpty(token))
|
||||||
{
|
{
|
||||||
|
|
@ -98,8 +96,6 @@ public class AuthFilter implements GlobalFilter, Ordered
|
||||||
// 内部请求来源参数清除
|
// 内部请求来源参数清除
|
||||||
removeHeader(mutate);
|
removeHeader(mutate);
|
||||||
|
|
||||||
long end = System.currentTimeMillis();
|
|
||||||
log.info("auth time {}", end - start);
|
|
||||||
return chain.filter(exchange.mutate().request(mutate.build()).build());
|
return chain.filter(exchange.mutate().request(mutate.build()).build());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,32 @@
|
||||||
|
package com.chushang.gateway.filter;
|
||||||
|
|
||||||
|
import com.chushang.common.core.constant.CommonConstants;
|
||||||
|
import org.springframework.cloud.gateway.filter.GatewayFilterChain;
|
||||||
|
import org.springframework.cloud.gateway.filter.GlobalFilter;
|
||||||
|
import org.springframework.core.Ordered;
|
||||||
|
import org.springframework.http.server.reactive.ServerHttpRequest;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
import org.springframework.web.server.ServerWebExchange;
|
||||||
|
import reactor.core.publisher.Mono;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 计算请求时间
|
||||||
|
*/
|
||||||
|
@Component
|
||||||
|
public class TimestampHeaderFilter implements GlobalFilter, Ordered {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
|
||||||
|
ServerHttpRequest request = exchange.getRequest();
|
||||||
|
// 创建一个新的请求对象并替换原来的头信息
|
||||||
|
ServerHttpRequest mutatedRequest = request.mutate().headers(headers -> headers.add(CommonConstants.START_TIME, System.currentTimeMillis() + "")).build();
|
||||||
|
// 继续处理请求
|
||||||
|
return chain.filter(exchange.mutate().request(mutatedRequest).build());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getOrder() {
|
||||||
|
// 设置过滤器的执行顺序,数值越小,优先级越高
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue