feat(REQ-2516): 完善记录异常逻辑

This commit is contained in:
wangli 2024-06-25 12:41:35 +08:00
parent 4e99047398
commit b05ba57a7d
3 changed files with 15 additions and 5 deletions

View File

@ -27,4 +27,8 @@ public interface ExceptionResultHandler<T extends Throwable, R extends Result> {
default boolean isRecursive() {
return false;
}
default boolean shouldFilter(ExceptionResultHandler<? extends Throwable, ? extends Result> handler, Throwable e) {
return handler.getExceptionClass().isAssignableFrom(e.getClass());
}
}

View File

@ -4,6 +4,8 @@ import feign.RequestInterceptor;
import feign.RequestTemplate;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.slf4j.MDC;
import org.springframework.util.StringUtils;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
@ -21,6 +23,7 @@ import static cn.axzo.framework.web.exception.BasicRecordExceptionHandler.MICRO_
*/
public class FeignRecordExceptionInterceptor implements RequestInterceptor {
private static final Logger log = LoggerFactory.getLogger(FeignRecordExceptionInterceptor.class);
@Override
public void apply(RequestTemplate template) {
HttpServletRequest originalRequest = getOriginalRequest();
@ -35,12 +38,19 @@ public class FeignRecordExceptionInterceptor implements RequestInterceptor {
private void setRequestParams(RequestTemplate template, HttpServletRequest originalRequest) {
String[] packageNames = originalRequest.getParameterValues(MICRO_SERVER_RECORD_ERROR_GET_PARAM_NAME);
if (Objects.isNull(packageNames) || packageNames.length == 0) {
packageNames = StringUtils.commaDelimitedListToStringArray(MDC.get(MICRO_SERVER_RECORD_ERROR_GET_PARAM_NAME));
}
template.query(MICRO_SERVER_RECORD_ERROR_GET_PARAM_NAME, packageNames);
}
private static void setXMetaDataTag(RequestTemplate template, HttpServletRequest originalRequest) {
// 需要传递外部传入的标识
template.header(MICRO_SERVER_RECORD_ERROR_HEADER_NAME, originalRequest.getHeader(MICRO_SERVER_RECORD_ERROR_HEADER_NAME));
String headerValue = originalRequest.getHeader(MICRO_SERVER_RECORD_ERROR_HEADER_NAME);
if (!StringUtils.hasText(headerValue)) {
headerValue = MDC.get(MICRO_SERVER_RECORD_ERROR_HEADER_NAME);
}
template.header(MICRO_SERVER_RECORD_ERROR_HEADER_NAME, headerValue);
}
public static HttpServletRequest getOriginalRequest() {

View File

@ -1,8 +1,5 @@
package cn.axzo.framework.web.filter;
import cn.axzo.framework.validator.constraints.UTF8;
import com.google.common.collect.Lists;
import jdk.nashorn.internal.runtime.JSONFunctions;
import org.slf4j.MDC;
import org.springframework.core.Ordered;
import org.springframework.core.PriorityOrdered;
@ -14,7 +11,6 @@ import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Arrays;
import static cn.axzo.framework.web.exception.BasicRecordExceptionHandler.MICRO_SERVER_RECORD_ERROR_GET_PARAM_NAME;
import static cn.axzo.framework.web.exception.BasicRecordExceptionHandler.MICRO_SERVER_RECORD_ERROR_HEADER_NAME;