This commit is contained in:
tanghc
2020-10-29 14:06:20 +08:00
parent 5e906bc4ba
commit 3cef44dc96
3 changed files with 12 additions and 2 deletions

View File

@@ -56,4 +56,6 @@ public class SopConstants {
public static final String METADATA_KEY_TIME_STARTUP = "server.startup-time";
public static final String CACHE_ROUTE_INFO = "cacheRouteInfo";
}

View File

@@ -1,6 +1,8 @@
package com.gitee.sop.gatewaycommon.gateway.handler;
import com.gitee.sop.gatewaycommon.bean.ApiContext;
import com.gitee.sop.gatewaycommon.bean.SopConstants;
import com.gitee.sop.gatewaycommon.bean.TargetRoute;
import com.gitee.sop.gatewaycommon.gateway.ServerWebExchangeUtil;
import com.gitee.sop.gatewaycommon.param.ApiParam;
import com.gitee.sop.gatewaycommon.result.ResultExecutor;
@@ -55,7 +57,8 @@ public class GatewayExceptionHandler implements ErrorWebExceptionHandler {
String errorResult = resultExecutor.buildErrorResult(exchange, ex);
ApiParam apiParam = ServerWebExchangeUtil.getApiParam(exchange);
// 错误记录
log.error("gateway网关报错params:{}, errorMsg:{}", apiParam, ex.getMessage(), ex);
Object routeDefinition = exchange.getAttribute(SopConstants.CACHE_ROUTE_INFO);
log.error("网关报错,参数:{}, 错误信息:{}, 路由信息:{}", apiParam, ex.getMessage(), routeDefinition, ex);
// 参考AbstractErrorWebExceptionHandler
if (exchange.getResponse().isCommitted()) {
return Mono.error(ex);

View File

@@ -1,5 +1,7 @@
package com.gitee.sop.gatewaycommon.gateway.route;
import com.gitee.sop.gatewaycommon.bean.SopConstants;
import com.gitee.sop.gatewaycommon.bean.TargetRoute;
import com.gitee.sop.gatewaycommon.gateway.ServerWebExchangeUtil;
import com.gitee.sop.gatewaycommon.param.ApiParam;
import com.gitee.sop.gatewaycommon.route.BaseForwardChooser;
@@ -22,6 +24,9 @@ public class GatewayForwardChooser extends BaseForwardChooser<ServerWebExchange>
if (ServerWebExchangeUtil.getThrowable(exchange) != null) {
return ForwardInfo.getErrorForwardInfo();
}
return super.getForwardInfo(exchange);
ForwardInfo forwardInfo = super.getForwardInfo(exchange);
TargetRoute targetRoute = forwardInfo.getTargetRoute();
exchange.getAttributes().put(SopConstants.CACHE_ROUTE_INFO, targetRoute.getRouteDefinition());
return forwardInfo;
}
}