From 4014d0a8a62d656232f3516efeac0075d6e3283a Mon Sep 17 00:00:00 2001 From: Francis Dong Date: Mon, 2 Aug 2021 17:21:50 +0800 Subject: [PATCH] print fizz runtime exception log #262 --- .../filter/FilterExceptionHandlerConfig.java | 1 + .../main/java/we/fizz/input/InputFactory.java | 16 +++++++++++---- .../extension/dubbo/DubboInputConfig.java | 20 +++++++++++-------- .../input/extension/grpc/GrpcInputConfig.java | 14 ++++++++----- .../extension/request/RequestInputConfig.java | 8 ++++++-- 5 files changed, 40 insertions(+), 19 deletions(-) diff --git a/fizz-core/src/main/java/we/filter/FilterExceptionHandlerConfig.java b/fizz-core/src/main/java/we/filter/FilterExceptionHandlerConfig.java index 71d9d10..e1bfd49 100644 --- a/fizz-core/src/main/java/we/filter/FilterExceptionHandlerConfig.java +++ b/fizz-core/src/main/java/we/filter/FilterExceptionHandlerConfig.java @@ -84,6 +84,7 @@ public class FilterExceptionHandlerConfig { } if (t instanceof FizzRuntimeException) { FizzRuntimeException ex = (FizzRuntimeException) t; + log.error(ex.getMessage(), LogService.BIZ_ID, exchange.getRequest().getId(), ex); resp.getHeaders().add(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE); RespEntity rs = null; String reqId = exchange.getRequest().getId(); diff --git a/fizz-core/src/main/java/we/fizz/input/InputFactory.java b/fizz-core/src/main/java/we/fizz/input/InputFactory.java index c0b611b..33eef0e 100644 --- a/fizz-core/src/main/java/we/fizz/input/InputFactory.java +++ b/fizz-core/src/main/java/we/fizz/input/InputFactory.java @@ -19,6 +19,8 @@ package we.fizz.input; import we.fizz.component.ComponentHelper; import we.fizz.exception.FizzRuntimeException; +import we.fizz.input.extension.request.RequestInput; + import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; @@ -26,12 +28,16 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + /** * * @author linwaiwai * */ public class InputFactory { + private static final Logger LOGGER = LoggerFactory.getLogger(InputFactory.class); public static Map inputClasses = new HashMap(); public static void registerInput(InputType type, Class inputClass){ inputClasses.put(type, inputClass); @@ -53,8 +59,9 @@ public class InputFactory { constructor = InputConfigClass.getDeclaredConstructor(Map.class); constructor.setAccessible(true); inputConfig = (InputConfig) constructor.newInstance(config); - } catch (NoSuchMethodException | InstantiationException | IllegalAccessException | InvocationTargetException e) { - throw new FizzRuntimeException(e.getMessage()); + } catch (Exception e) { + LOGGER.error("failed to create input config, error: {}", e.getMessage(), e); + throw new FizzRuntimeException("failed to create input config, message: " + e.getMessage(), e); } inputConfig.setType(typeEnum); inputConfig.setDataMapping((Map) config.get("dataMapping")); @@ -76,8 +83,9 @@ public class InputFactory { constructor.setAccessible(true); input = (Input) constructor.newInstance(); return input; - } catch (NoSuchMethodException | InstantiationException | IllegalAccessException | InvocationTargetException e) { - throw new FizzRuntimeException(e.getMessage()); + } catch (Exception e) { + LOGGER.error("failed to create input config, error: {}", e.getMessage(), e); + throw new FizzRuntimeException("failed to create input config, message: " + e.getMessage(), e); } } return null; diff --git a/fizz-core/src/main/java/we/fizz/input/extension/dubbo/DubboInputConfig.java b/fizz-core/src/main/java/we/fizz/input/extension/dubbo/DubboInputConfig.java index 0cc8f4e..99fc9de 100644 --- a/fizz-core/src/main/java/we/fizz/input/extension/dubbo/DubboInputConfig.java +++ b/fizz-core/src/main/java/we/fizz/input/extension/dubbo/DubboInputConfig.java @@ -18,7 +18,7 @@ package we.fizz.input.extension.dubbo; import java.util.Map; -import org.springframework.util.StringUtils; +import org.apache.commons.lang3.StringUtils; import we.fizz.exception.FizzRuntimeException; import we.fizz.input.InputConfig; @@ -43,33 +43,37 @@ public class DubboInputConfig extends InputConfig { public void parse() { String serviceName = (String) configMap.get("serviceName"); - if (StringUtils.isEmpty(serviceName)) { + if (StringUtils.isBlank(serviceName)) { throw new FizzRuntimeException("service name can not be blank"); } setServiceName(serviceName); String version = (String) configMap.get("version"); - if (!StringUtils.isEmpty(version)) { + if (!StringUtils.isBlank(version)) { setVersion(version); } String group = (String) configMap.get("group"); - if (!StringUtils.isEmpty(group)) { + if (!StringUtils.isBlank(group)) { setGroup(group); } String method = (String) configMap.get("method"); - if (StringUtils.isEmpty(method)) { + if (StringUtils.isBlank(method)) { throw new FizzRuntimeException("method can not be blank"); } setMethod(method); String paramTypes = (String) configMap.get("paramTypes"); - if (!StringUtils.isEmpty(paramTypes)) { + if (!StringUtils.isBlank(paramTypes)) { setParamTypes(paramTypes); } - if (configMap.get("timeout") != null) { - setTimeout(Integer.valueOf(configMap.get("timeout").toString())); + if (configMap.get("timeout") != null && StringUtils.isNotBlank(configMap.get("timeout").toString())) { + try { + setTimeout(Integer.valueOf(configMap.get("timeout").toString())); + } catch (Exception e) { + throw new RuntimeException("invalid timeout: " + configMap.get("timeout").toString() + " " + e.getMessage(), e); + } } } diff --git a/fizz-core/src/main/java/we/fizz/input/extension/grpc/GrpcInputConfig.java b/fizz-core/src/main/java/we/fizz/input/extension/grpc/GrpcInputConfig.java index 9586d6b..818ff9d 100644 --- a/fizz-core/src/main/java/we/fizz/input/extension/grpc/GrpcInputConfig.java +++ b/fizz-core/src/main/java/we/fizz/input/extension/grpc/GrpcInputConfig.java @@ -22,7 +22,7 @@ import we.fizz.input.InputConfig; import java.util.Map; -import org.springframework.util.StringUtils; +import org.apache.commons.lang3.StringUtils; /** * @@ -42,19 +42,23 @@ public class GrpcInputConfig extends InputConfig { public void parse() { String serviceName = (String) configMap.get("serviceName"); - if (StringUtils.isEmpty(serviceName)) { + if (StringUtils.isBlank(serviceName)) { throw new FizzRuntimeException("service name can not be blank"); } setServiceName(serviceName); String method = (String) configMap.get("method"); - if (StringUtils.isEmpty(method)) { + if (StringUtils.isBlank(method)) { throw new FizzRuntimeException("method can not be blank"); } setMethod(method); - if (configMap.get("timeout") != null) { - setTimeout(Integer.valueOf(configMap.get("timeout").toString())); + if (configMap.get("timeout") != null && StringUtils.isNotBlank(configMap.get("timeout").toString())) { + try { + setTimeout(Integer.valueOf(configMap.get("timeout").toString())); + } catch (Exception e) { + throw new RuntimeException("invalid timeout: " + configMap.get("timeout").toString() + " " + e.getMessage(), e); + } } } diff --git a/fizz-core/src/main/java/we/fizz/input/extension/request/RequestInputConfig.java b/fizz-core/src/main/java/we/fizz/input/extension/request/RequestInputConfig.java index c99b15d..0467365 100644 --- a/fizz-core/src/main/java/we/fizz/input/extension/request/RequestInputConfig.java +++ b/fizz-core/src/main/java/we/fizz/input/extension/request/RequestInputConfig.java @@ -74,8 +74,12 @@ public class RequestInputConfig extends InputConfig { } else { setMethod("GET"); } - if (configBody.get("timeout") != null) { - timeout = Integer.valueOf(configBody.get("timeout").toString()); + if (configBody.get("timeout") != null && StringUtils.isNotBlank(configBody.get("timeout").toString())) { + try { + timeout = Integer.valueOf(configBody.get("timeout").toString()); + } catch (Exception e) { + throw new RuntimeException("invalid timeout: " + configBody.get("timeout").toString() + " " + e.getMessage(), e); + } } if (configBody.get("fallback") != null) { Map fallback = (Map)configBody.get("fallback");