diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/constants/LoggerCodeConstants.java b/dubbo-common/src/main/java/org/apache/dubbo/common/constants/LoggerCodeConstants.java index c8d4cf9543..376ed2bcaf 100644 --- a/dubbo-common/src/main/java/org/apache/dubbo/common/constants/LoggerCodeConstants.java +++ b/dubbo-common/src/main/java/org/apache/dubbo/common/constants/LoggerCodeConstants.java @@ -37,6 +37,10 @@ public interface LoggerCodeConstants { String COMMON_CLASS_NOT_FOUND = "0-7"; + String COMMON_FAILED_REFLECT = "0-8"; + + String COMMON_FAILED_NOTIFY_EVENT = "0-9"; + // registry module String REGISTRY_ADDRESS_INVALID = "1-1"; @@ -150,6 +154,16 @@ public interface LoggerCodeConstants { // proxy module String PROXY_FAILED_CONVERT_URL = "3-1"; + String PROXY_FAILED_EXPORT_SERVICE = "3-2"; + + String PROXY_FAILED_JAVASSIST = "3-3"; + + String PROXY_TIMEOUT_REQUEST = "3-4"; + + String PROXY_ERROR_ASYNC_RESPONSE = "3-5"; + + String PROXY_UNSUPPORTED_INVOKER = "3-6"; + // protocol module String PROTOCOL_UNSUPPORTED = "4-1"; @@ -185,6 +199,12 @@ public interface LoggerCodeConstants { String PROTOCOL_FAILED_DESTROY_INVOKER = "4-17"; + String PROTOCOL_FAILED_LOAD_MODEL = "4-18"; + + String PROTOCOL_INCORRECT_PARAMETER_VALUES = "4-19"; + + String PROTOCOL_FAILED_DECODE = "4-20"; + // config module String CONFIG_FAILED_CONNECT_REGISTRY = "5-1"; diff --git a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/AsyncRpcResult.java b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/AsyncRpcResult.java index 027dcd4892..4814ce0acc 100644 --- a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/AsyncRpcResult.java +++ b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/AsyncRpcResult.java @@ -17,7 +17,7 @@ package org.apache.dubbo.rpc; import org.apache.dubbo.common.constants.CommonConstants; -import org.apache.dubbo.common.logger.Logger; +import org.apache.dubbo.common.logger.ErrorTypeAwareLogger; import org.apache.dubbo.common.logger.LoggerFactory; import org.apache.dubbo.common.threadpool.ThreadlessExecutor; import org.apache.dubbo.rpc.model.ConsumerMethodModel; @@ -33,6 +33,7 @@ import java.util.function.BiConsumer; import java.util.function.Function; import static org.apache.dubbo.common.constants.CommonConstants.PROVIDER_ASYNC_KEY; +import static org.apache.dubbo.common.constants.LoggerCodeConstants.PROXY_ERROR_ASYNC_RESPONSE; import static org.apache.dubbo.common.utils.ReflectUtils.defaultReturn; /** @@ -50,7 +51,7 @@ import static org.apache.dubbo.common.utils.ReflectUtils.defaultReturn; * for compatibility consideration. Because many legacy {@link Filter} implementation are most possibly to call getValue directly. */ public class AsyncRpcResult implements Result { - private static final Logger logger = LoggerFactory.getLogger(AsyncRpcResult.class); + private static final ErrorTypeAwareLogger logger = LoggerFactory.getErrorTypeAwareLogger(AsyncRpcResult.class); /** * RpcContext may already have been changed when callback happens, it happens when the same thread is used to execute another RPC call. @@ -95,7 +96,7 @@ public class AsyncRpcResult implements Result { /** * CompletableFuture can only be completed once, so try to update the result of one completed CompletableFuture will * have no effect. To avoid this problem, we check the complete status of this future before update its value. - * + *

* But notice that trying to give an uncompleted CompletableFuture a new specified value may face a race condition, * because the background thread watching the real result will also change the status of this CompletableFuture. * The result is you may lose the value you expected to set. @@ -114,7 +115,7 @@ public class AsyncRpcResult implements Result { } } catch (Exception e) { // This should not happen in normal request process; - logger.error("Got exception when trying to fetch the underlying result from AsyncRpcResult."); + logger.error(PROXY_ERROR_ASYNC_RESPONSE, "", "", "Got exception when trying to fetch the underlying result from AsyncRpcResult."); throw new RpcException(e); } } @@ -136,7 +137,7 @@ public class AsyncRpcResult implements Result { } } catch (Exception e) { // This should not happen in normal request process; - logger.error("Got exception when trying to fetch the underlying result from AsyncRpcResult."); + logger.error(PROXY_ERROR_ASYNC_RESPONSE, "", "", "Got exception when trying to fetch the underlying result from AsyncRpcResult."); throw new RpcException(e); } } @@ -161,7 +162,7 @@ public class AsyncRpcResult implements Result { } } catch (Exception e) { // This should not happen in normal request process; - logger.error("Got exception when trying to fetch the underlying result from AsyncRpcResult."); + logger.error(PROXY_ERROR_ASYNC_RESPONSE, "", "", "Got exception when trying to fetch the underlying result from AsyncRpcResult."); throw new RpcException(e); } diff --git a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/ExecutableListener.java b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/ExecutableListener.java index c263bf8ede..edfc05a49d 100644 --- a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/ExecutableListener.java +++ b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/ExecutableListener.java @@ -17,15 +17,17 @@ package org.apache.dubbo.rpc; -import org.apache.dubbo.common.logger.Logger; +import org.apache.dubbo.common.logger.ErrorTypeAwareLogger; import org.apache.dubbo.common.logger.LoggerFactory; import java.util.concurrent.Executor; +import static org.apache.dubbo.common.constants.LoggerCodeConstants.COMMON_FAILED_NOTIFY_EVENT; + public class ExecutableListener implements Runnable { - private static final Logger log = LoggerFactory.getLogger(ExecutableListener.class); + private static final ErrorTypeAwareLogger log = LoggerFactory.getErrorTypeAwareLogger(ExecutableListener.class); private final Executor executor; private final CancellationListener listener; @@ -46,7 +48,7 @@ public class ExecutableListener implements Runnable { try { executor.execute(this); } catch (Throwable t) { - log.warn("Exception notifying context listener", t); + log.warn(COMMON_FAILED_NOTIFY_EVENT, "", "", "Exception notifying context listener", t); } } diff --git a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/listener/DeprecatedInvokerListener.java b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/listener/DeprecatedInvokerListener.java index a647769e83..4ec9a15f5c 100644 --- a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/listener/DeprecatedInvokerListener.java +++ b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/listener/DeprecatedInvokerListener.java @@ -17,11 +17,12 @@ package org.apache.dubbo.rpc.listener; import org.apache.dubbo.common.extension.Activate; -import org.apache.dubbo.common.logger.Logger; +import org.apache.dubbo.common.logger.ErrorTypeAwareLogger; import org.apache.dubbo.common.logger.LoggerFactory; import org.apache.dubbo.rpc.Invoker; import org.apache.dubbo.rpc.RpcException; +import static org.apache.dubbo.common.constants.LoggerCodeConstants.PROXY_UNSUPPORTED_INVOKER; import static org.apache.dubbo.rpc.Constants.DEPRECATED_KEY; /** @@ -30,12 +31,12 @@ import static org.apache.dubbo.rpc.Constants.DEPRECATED_KEY; @Activate(DEPRECATED_KEY) public class DeprecatedInvokerListener extends InvokerListenerAdapter { - private static final Logger LOGGER = LoggerFactory.getLogger(DeprecatedInvokerListener.class); + private static final ErrorTypeAwareLogger LOGGER = LoggerFactory.getErrorTypeAwareLogger(DeprecatedInvokerListener.class); @Override public void referred(Invoker invoker) throws RpcException { if (invoker.getUrl().getParameter(DEPRECATED_KEY, false)) { - LOGGER.error("The service " + invoker.getInterface().getName() + " is DEPRECATED! Declare from " + invoker.getUrl()); + LOGGER.error(PROXY_UNSUPPORTED_INVOKER,"","","The service " + invoker.getInterface().getName() + " is DEPRECATED! Declare from " + invoker.getUrl()); } } diff --git a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/listener/ListenerExporterWrapper.java b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/listener/ListenerExporterWrapper.java index 021af672a4..972f5cbc56 100644 --- a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/listener/ListenerExporterWrapper.java +++ b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/listener/ListenerExporterWrapper.java @@ -16,7 +16,7 @@ */ package org.apache.dubbo.rpc.listener; -import org.apache.dubbo.common.logger.Logger; +import org.apache.dubbo.common.logger.ErrorTypeAwareLogger; import org.apache.dubbo.common.logger.LoggerFactory; import org.apache.dubbo.common.utils.CollectionUtils; import org.apache.dubbo.rpc.Exporter; @@ -26,12 +26,14 @@ import org.apache.dubbo.rpc.Invoker; import java.util.List; import java.util.function.Consumer; +import static org.apache.dubbo.common.constants.LoggerCodeConstants.COMMON_FAILED_NOTIFY_EVENT; + /** * ListenerExporter */ public class ListenerExporterWrapper implements Exporter { - private static final Logger logger = LoggerFactory.getLogger(ListenerExporterWrapper.class); + private static final ErrorTypeAwareLogger logger = LoggerFactory.getErrorTypeAwareLogger(ListenerExporterWrapper.class); private final Exporter exporter; @@ -68,7 +70,7 @@ public class ListenerExporterWrapper implements Exporter { try { consumer.accept(listener); } catch (RuntimeException t) { - logger.error(t.getMessage(), t); + logger.error(COMMON_FAILED_NOTIFY_EVENT, "", "", t.getMessage(), t); exception = t; } } diff --git a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/listener/ListenerInvokerWrapper.java b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/listener/ListenerInvokerWrapper.java index 2addb81d29..b4ee190812 100644 --- a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/listener/ListenerInvokerWrapper.java +++ b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/listener/ListenerInvokerWrapper.java @@ -17,7 +17,7 @@ package org.apache.dubbo.rpc.listener; import org.apache.dubbo.common.URL; -import org.apache.dubbo.common.logger.Logger; +import org.apache.dubbo.common.logger.ErrorTypeAwareLogger; import org.apache.dubbo.common.logger.LoggerFactory; import org.apache.dubbo.common.utils.CollectionUtils; import org.apache.dubbo.rpc.Invocation; @@ -34,7 +34,7 @@ import java.util.function.Consumer; */ public class ListenerInvokerWrapper implements Invoker { - private static final Logger logger = LoggerFactory.getLogger(ListenerInvokerWrapper.class); + private static final ErrorTypeAwareLogger logger = LoggerFactory.getErrorTypeAwareLogger(ListenerInvokerWrapper.class); private final Invoker invoker; diff --git a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/protocol/AbstractExporter.java b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/protocol/AbstractExporter.java index 41e4eccb95..2378b2458b 100644 --- a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/protocol/AbstractExporter.java +++ b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/protocol/AbstractExporter.java @@ -16,7 +16,7 @@ */ package org.apache.dubbo.rpc.protocol; -import org.apache.dubbo.common.logger.Logger; +import org.apache.dubbo.common.logger.ErrorTypeAwareLogger; import org.apache.dubbo.common.logger.LoggerFactory; import org.apache.dubbo.rpc.Exporter; import org.apache.dubbo.rpc.Invoker; @@ -26,7 +26,7 @@ import org.apache.dubbo.rpc.Invoker; */ public abstract class AbstractExporter implements Exporter { - protected final Logger logger = LoggerFactory.getLogger(getClass()); + protected final ErrorTypeAwareLogger logger = LoggerFactory.getErrorTypeAwareLogger(getClass()); private final Invoker invoker; diff --git a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/protocol/AbstractProtocol.java b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/protocol/AbstractProtocol.java index abd3d4ae23..50c37d9a81 100644 --- a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/protocol/AbstractProtocol.java +++ b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/protocol/AbstractProtocol.java @@ -45,6 +45,7 @@ import java.util.concurrent.ConcurrentHashMap; import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_SERVER_SHUTDOWN_TIMEOUT; import static org.apache.dubbo.common.constants.CommonConstants.SHUTDOWN_WAIT_KEY; import static org.apache.dubbo.common.constants.CommonConstants.OPTIMIZER_KEY; +import static org.apache.dubbo.common.constants.LoggerCodeConstants.PROTOCOL_FAILED_DESTROY_INVOKER; /** * abstract ProtocolSupport. @@ -107,13 +108,13 @@ public abstract class AbstractProtocol implements Protocol, ScopeModelAware { } invoker.destroy(); } catch (Throwable t) { - logger.warn(t.getMessage(), t); + logger.warn(PROTOCOL_FAILED_DESTROY_INVOKER, "", "", t.getMessage(), t); } } } invokers.clear(); - exporterMap.forEach((key, exporter)-> { + exporterMap.forEach((key, exporter) -> { if (exporter != null) { try { if (logger.isInfoEnabled()) { @@ -121,7 +122,7 @@ public abstract class AbstractProtocol implements Protocol, ScopeModelAware { } exporter.unexport(); } catch (Throwable t) { - logger.warn(t.getMessage(), t); + logger.warn(PROTOCOL_FAILED_DESTROY_INVOKER, "", "", t.getMessage(), t); } } }); diff --git a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/protocol/AbstractProxyProtocol.java b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/protocol/AbstractProxyProtocol.java index 3af93813a4..e1727c38ca 100644 --- a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/protocol/AbstractProxyProtocol.java +++ b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/protocol/AbstractProxyProtocol.java @@ -44,6 +44,7 @@ import java.util.concurrent.CopyOnWriteArrayList; import static org.apache.dubbo.common.constants.CommonConstants.ANYHOST_KEY; import static org.apache.dubbo.common.constants.CommonConstants.ANYHOST_VALUE; +import static org.apache.dubbo.common.constants.LoggerCodeConstants.PROTOCOL_UNSUPPORTED; /** * AbstractProxyProtocol @@ -95,7 +96,7 @@ public abstract class AbstractProxyProtocol extends AbstractProtocol { try { runnable.run(); } catch (Throwable t) { - logger.warn(t.getMessage(), t); + logger.warn(PROTOCOL_UNSUPPORTED, "", "", t.getMessage(), t); } } } diff --git a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/proxy/AbstractProxyFactory.java b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/proxy/AbstractProxyFactory.java index 974c73aaac..269392b04b 100644 --- a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/proxy/AbstractProxyFactory.java +++ b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/proxy/AbstractProxyFactory.java @@ -16,7 +16,7 @@ */ package org.apache.dubbo.rpc.proxy; -import org.apache.dubbo.common.logger.Logger; +import org.apache.dubbo.common.logger.ErrorTypeAwareLogger; import org.apache.dubbo.common.logger.LoggerFactory; import org.apache.dubbo.common.utils.ClassUtils; import org.apache.dubbo.common.utils.ReflectUtils; @@ -34,6 +34,7 @@ import java.util.Arrays; import java.util.LinkedHashSet; import static org.apache.dubbo.common.constants.CommonConstants.COMMA_SPLIT_PATTERN; +import static org.apache.dubbo.common.constants.LoggerCodeConstants.PROXY_UNSUPPORTED_INVOKER; import static org.apache.dubbo.rpc.Constants.INTERFACES; /** @@ -44,7 +45,7 @@ public abstract class AbstractProxyFactory implements ProxyFactory { EchoService.class, Destroyable.class }; - private static final Logger logger = LoggerFactory.getLogger(AbstractProxyFactory.class); + private static final ErrorTypeAwareLogger logger = LoggerFactory.getErrorTypeAwareLogger(AbstractProxyFactory.class); @Override public T getProxy(Invoker invoker) throws RpcException { @@ -98,7 +99,7 @@ public abstract class AbstractProxyFactory implements ProxyFactory { } interfaces.remove(invoker.getInterface()); - logger.error("Error occur when creating proxy. Invoker is in generic mode. Trying to create proxy without real interface class.", t); + logger.error(PROXY_UNSUPPORTED_INVOKER, "", "", "Error occur when creating proxy. Invoker is in generic mode. Trying to create proxy without real interface class.", t); return getProxy(invoker, interfaces.toArray(new Class[0])); } else { throw t; diff --git a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/proxy/AbstractProxyInvoker.java b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/proxy/AbstractProxyInvoker.java index 7235d0fdb2..f9b6f0db82 100644 --- a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/proxy/AbstractProxyInvoker.java +++ b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/proxy/AbstractProxyInvoker.java @@ -17,7 +17,7 @@ package org.apache.dubbo.rpc.proxy; import org.apache.dubbo.common.URL; -import org.apache.dubbo.common.logger.Logger; +import org.apache.dubbo.common.logger.ErrorTypeAwareLogger; import org.apache.dubbo.common.logger.LoggerFactory; import org.apache.dubbo.common.profiler.Profiler; import org.apache.dubbo.common.profiler.ProfilerEntry; @@ -36,12 +36,13 @@ import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletionException; import static org.apache.dubbo.common.constants.CommonConstants.PROVIDER_ASYNC_KEY; +import static org.apache.dubbo.common.constants.LoggerCodeConstants.PROXY_ERROR_ASYNC_RESPONSE; /** * This Invoker works on provider side, delegates RPC to interface implementation. */ public abstract class AbstractProxyInvoker implements Invoker { - Logger logger = LoggerFactory.getLogger(AbstractProxyInvoker.class); + ErrorTypeAwareLogger logger = LoggerFactory.getErrorTypeAwareLogger(AbstractProxyInvoker.class); private final T proxy; @@ -127,7 +128,7 @@ public abstract class AbstractProxyInvoker implements Invoker { return new AsyncRpcResult(appResponseFuture, invocation); } catch (InvocationTargetException e) { if (RpcContext.getServiceContext().isAsyncStarted() && !RpcContext.getServiceContext().stopAsync()) { - logger.error("Provider async started, but got an exception from the original method, cannot write the exception back to consumer because an async result may have returned the new thread.", e); + logger.error(PROXY_ERROR_ASYNC_RESPONSE, "", "", "Provider async started, but got an exception from the original method, cannot write the exception back to consumer because an async result may have returned the new thread.", e); } return AsyncRpcResult.newDefaultAsyncResult(null, e.getTargetException(), invocation); } catch (Throwable e) { diff --git a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/proxy/InvocationUtil.java b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/proxy/InvocationUtil.java index 9d75590624..dd245a4767 100644 --- a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/proxy/InvocationUtil.java +++ b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/proxy/InvocationUtil.java @@ -18,7 +18,7 @@ package org.apache.dubbo.rpc.proxy; import org.apache.dubbo.common.URL; -import org.apache.dubbo.common.logger.Logger; +import org.apache.dubbo.common.logger.ErrorTypeAwareLogger; import org.apache.dubbo.common.logger.LoggerFactory; import org.apache.dubbo.common.profiler.Profiler; import org.apache.dubbo.common.profiler.ProfilerEntry; @@ -29,9 +29,10 @@ import org.apache.dubbo.rpc.RpcServiceContext; import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_TIMEOUT; import static org.apache.dubbo.common.constants.CommonConstants.TIMEOUT_KEY; +import static org.apache.dubbo.common.constants.LoggerCodeConstants.PROXY_TIMEOUT_REQUEST; public class InvocationUtil { - private static final Logger logger = LoggerFactory.getLogger(InvokerInvocationHandler.class); + private static final ErrorTypeAwareLogger logger = LoggerFactory.getErrorTypeAwareLogger(InvokerInvocationHandler.class); public static Object invoke(Invoker invoker, RpcInvocation rpcInvocation) throws Throwable { URL url = invoker.getUrl(); @@ -71,7 +72,7 @@ public class InvocationUtil { attachment.append(entry.getKey()).append("=").append(entry.getValue()).append(";\n"); }); - logger.warn(String.format( + logger.warn(PROXY_TIMEOUT_REQUEST, "", "", String.format( "[Dubbo-Consumer] execute service %s#%s cost %d.%06d ms, this invocation almost (maybe already) timeout. Timeout: %dms\n" + "invocation context:\n%s" + "thread info: \n%s", rpcInvocation.getProtocolServiceKey(), rpcInvocation.getMethodName(), diff --git a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/proxy/javassist/JavassistProxyFactory.java b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/proxy/javassist/JavassistProxyFactory.java index 12d48f5427..8755a75cca 100644 --- a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/proxy/javassist/JavassistProxyFactory.java +++ b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/proxy/javassist/JavassistProxyFactory.java @@ -29,6 +29,8 @@ import org.apache.dubbo.rpc.proxy.jdk.JdkProxyFactory; import java.util.Arrays; +import static org.apache.dubbo.common.constants.LoggerCodeConstants.PROXY_FAILED_JAVASSIST; + /** * JavassistRpcProxyFactory */ @@ -45,13 +47,13 @@ public class JavassistProxyFactory extends AbstractProxyFactory { // try fall back to JDK proxy factory try { T proxy = jdkProxyFactory.getProxy(invoker, interfaces); - logger.error("Failed to generate proxy by Javassist failed. Fallback to use JDK proxy success. " + + logger.error(PROXY_FAILED_JAVASSIST, "", "", "Failed to generate proxy by Javassist failed. Fallback to use JDK proxy success. " + "Interfaces: " + Arrays.toString(interfaces), fromJavassist); return proxy; } catch (Throwable fromJdk) { - logger.error("Failed to generate proxy by Javassist failed. Fallback to use JDK proxy is also failed. " + + logger.error(PROXY_FAILED_JAVASSIST, "", "", "Failed to generate proxy by Javassist failed. Fallback to use JDK proxy is also failed. " + "Interfaces: " + Arrays.toString(interfaces) + " Javassist Error.", fromJavassist); - logger.error("Failed to generate proxy by Javassist failed. Fallback to use JDK proxy is also failed. " + + logger.error(PROXY_FAILED_JAVASSIST, "", "", "Failed to generate proxy by Javassist failed. Fallback to use JDK proxy is also failed. " + "Interfaces: " + Arrays.toString(interfaces) + " JDK Error.", fromJdk); throw fromJavassist; } @@ -75,14 +77,14 @@ public class JavassistProxyFactory extends AbstractProxyFactory { // try fall back to JDK proxy factory try { Invoker invoker = jdkProxyFactory.getInvoker(proxy, type, url); - logger.error("Failed to generate invoker by Javassist failed. Fallback to use JDK proxy success. " + + logger.error(PROXY_FAILED_JAVASSIST, "", "", "Failed to generate invoker by Javassist failed. Fallback to use JDK proxy success. " + "Interfaces: " + type, fromJavassist); // log out error return invoker; } catch (Throwable fromJdk) { - logger.error("Failed to generate invoker by Javassist failed. Fallback to use JDK proxy is also failed. " + + logger.error(PROXY_FAILED_JAVASSIST, "", "", "Failed to generate invoker by Javassist failed. Fallback to use JDK proxy is also failed. " + "Interfaces: " + type + " Javassist Error.", fromJavassist); - logger.error("Failed to generate invoker by Javassist failed. Fallback to use JDK proxy is also failed. " + + logger.error(PROXY_FAILED_JAVASSIST, "", "", "Failed to generate invoker by Javassist failed. Fallback to use JDK proxy is also failed. " + "Interfaces: " + type + " JDK Error.", fromJdk); throw fromJavassist; } diff --git a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/proxy/wrapper/StubProxyFactoryWrapper.java b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/proxy/wrapper/StubProxyFactoryWrapper.java index a49b9755e7..9721df43ec 100644 --- a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/proxy/wrapper/StubProxyFactoryWrapper.java +++ b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/proxy/wrapper/StubProxyFactoryWrapper.java @@ -20,7 +20,7 @@ import org.apache.dubbo.common.URL; import org.apache.dubbo.common.URLBuilder; import org.apache.dubbo.common.Version; import org.apache.dubbo.common.bytecode.Wrapper; -import org.apache.dubbo.common.logger.Logger; +import org.apache.dubbo.common.logger.ErrorTypeAwareLogger; import org.apache.dubbo.common.logger.LoggerFactory; import org.apache.dubbo.common.utils.ConfigUtils; import org.apache.dubbo.common.utils.NetUtils; @@ -36,6 +36,7 @@ import org.apache.dubbo.rpc.service.GenericService; import java.lang.reflect.Constructor; import static org.apache.dubbo.common.constants.CommonConstants.STUB_EVENT_KEY; +import static org.apache.dubbo.common.constants.LoggerCodeConstants.PROXY_FAILED_EXPORT_SERVICE; import static org.apache.dubbo.rpc.Constants.DEFAULT_STUB_EVENT; import static org.apache.dubbo.rpc.Constants.IS_SERVER_KEY; import static org.apache.dubbo.rpc.Constants.LOCAL_KEY; @@ -47,7 +48,7 @@ import static org.apache.dubbo.rpc.Constants.STUB_KEY; */ public class StubProxyFactoryWrapper implements ProxyFactory { - private static final Logger LOGGER = LoggerFactory.getLogger(StubProxyFactoryWrapper.class); + private static final ErrorTypeAwareLogger LOGGER = LoggerFactory.getErrorTypeAwareLogger(StubProxyFactoryWrapper.class); private final ProxyFactory proxyFactory; @@ -92,14 +93,14 @@ public class StubProxyFactoryWrapper implements ProxyFactory { try { export(proxy, invoker.getInterface(), urlBuilder.build()); } catch (Exception e) { - LOGGER.error("export a stub service error.", e); + LOGGER.error(PROXY_FAILED_EXPORT_SERVICE, "", "", "export a stub service error.", e); } } } catch (NoSuchMethodException e) { throw new IllegalStateException("No such constructor \"public " + stubClass.getSimpleName() + "(" + serviceType.getName() + ")\" in stub implementation class " + stubClass.getName(), e); } } catch (Throwable t) { - LOGGER.error("Failed to create stub implementation class " + stub + " in consumer " + NetUtils.getLocalHost() + " use dubbo version " + Version.getVersion() + ", cause: " + t.getMessage(), t); + LOGGER.error(PROXY_FAILED_EXPORT_SERVICE, "", "", "Failed to create stub implementation class " + stub + " in consumer " + NetUtils.getLocalHost() + " use dubbo version " + Version.getVersion() + ", cause: " + t.getMessage(), t); // ignore } } diff --git a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/support/RpcUtils.java b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/support/RpcUtils.java index 747380722d..8f864efb46 100644 --- a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/support/RpcUtils.java +++ b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/support/RpcUtils.java @@ -17,7 +17,7 @@ package org.apache.dubbo.rpc.support; import org.apache.dubbo.common.URL; -import org.apache.dubbo.common.logger.Logger; +import org.apache.dubbo.common.logger.ErrorTypeAwareLogger; import org.apache.dubbo.common.logger.LoggerFactory; import org.apache.dubbo.common.utils.ReflectUtils; import org.apache.dubbo.common.utils.StringUtils; @@ -38,6 +38,7 @@ import static org.apache.dubbo.common.constants.CommonConstants.GENERIC_PARAMETE import static org.apache.dubbo.common.constants.CommonConstants.TIMEOUT_ATTACHMENT_KEY; import static org.apache.dubbo.common.constants.CommonConstants.TIMEOUT_ATTACHMENT_KEY_LOWER; import static org.apache.dubbo.common.constants.CommonConstants.TIMEOUT_KEY; +import static org.apache.dubbo.common.constants.LoggerCodeConstants.COMMON_FAILED_REFLECT; import static org.apache.dubbo.rpc.Constants.$ECHO; import static org.apache.dubbo.rpc.Constants.$ECHO_PARAMETER_DESC; import static org.apache.dubbo.rpc.Constants.ASYNC_KEY; @@ -50,15 +51,15 @@ import static org.apache.dubbo.rpc.Constants.RETURN_KEY; */ public class RpcUtils { - private static final Logger logger = LoggerFactory.getLogger(RpcUtils.class); + private static final ErrorTypeAwareLogger logger = LoggerFactory.getErrorTypeAwareLogger(RpcUtils.class); private static final AtomicLong INVOKE_ID = new AtomicLong(0); public static Class getReturnType(Invocation invocation) { try { if (invocation != null && invocation.getInvoker() != null - && invocation.getInvoker().getUrl() != null - && invocation.getInvoker().getInterface() != GenericService.class - && !invocation.getMethodName().startsWith("$")) { + && invocation.getInvoker().getUrl() != null + && invocation.getInvoker().getInterface() != GenericService.class + && !invocation.getMethodName().startsWith("$")) { String service = invocation.getInvoker().getUrl().getServiceInterface(); if (StringUtils.isNotEmpty(service)) { Method method = getMethodByService(invocation, service); @@ -66,7 +67,7 @@ public class RpcUtils { } } } catch (Throwable t) { - logger.warn(t.getMessage(), t); + logger.warn(COMMON_FAILED_REFLECT, "", "", t.getMessage(), t); } return null; } @@ -74,9 +75,9 @@ public class RpcUtils { public static Type[] getReturnTypes(Invocation invocation) { try { if (invocation != null && invocation.getInvoker() != null - && invocation.getInvoker().getUrl() != null - && invocation.getInvoker().getInterface() != GenericService.class - && !invocation.getMethodName().startsWith("$")) { + && invocation.getInvoker().getUrl() != null + && invocation.getInvoker().getInterface() != GenericService.class + && !invocation.getMethodName().startsWith("$")) { String service = invocation.getInvoker().getUrl().getServiceInterface(); if (StringUtils.isNotEmpty(service)) { Method method = getMethodByService(invocation, service); @@ -84,7 +85,7 @@ public class RpcUtils { } } } catch (Throwable t) { - logger.warn(t.getMessage(), t); + logger.warn(COMMON_FAILED_REFLECT, "", "", t.getMessage(), t); } return null; } @@ -120,9 +121,9 @@ public class RpcUtils { public static String getMethodName(Invocation invocation) { if ($INVOKE.equals(invocation.getMethodName()) - && invocation.getArguments() != null - && invocation.getArguments().length > 0 - && invocation.getArguments()[0] instanceof String) { + && invocation.getArguments() != null + && invocation.getArguments().length > 0 + && invocation.getArguments()[0] instanceof String) { return (String) invocation.getArguments()[0]; } return invocation.getMethodName(); @@ -130,9 +131,9 @@ public class RpcUtils { public static Object[] getArguments(Invocation invocation) { if ($INVOKE.equals(invocation.getMethodName()) - && invocation.getArguments() != null - && invocation.getArguments().length > 2 - && invocation.getArguments()[2] instanceof Object[]) { + && invocation.getArguments() != null + && invocation.getArguments().length > 2 + && invocation.getArguments()[2] instanceof Object[]) { return (Object[]) invocation.getArguments()[2]; } return invocation.getArguments(); @@ -140,9 +141,9 @@ public class RpcUtils { public static Class[] getParameterTypes(Invocation invocation) { if ($INVOKE.equals(invocation.getMethodName()) - && invocation.getArguments() != null - && invocation.getArguments().length > 1 - && invocation.getArguments()[1] instanceof String[]) { + && invocation.getArguments() != null + && invocation.getArguments().length > 1 + && invocation.getArguments()[1] instanceof String[]) { String[] types = (String[]) invocation.getArguments()[1]; if (types == null) { return new Class[0]; @@ -228,7 +229,7 @@ public class RpcUtils { private static Method getMethodByService(Invocation invocation, String service) throws NoSuchMethodException { Class invokerInterface = invocation.getInvoker().getInterface(); Class cls = invokerInterface != null ? ReflectUtils.forName(invokerInterface.getClassLoader(), service) - : ReflectUtils.forName(service); + : ReflectUtils.forName(service); Method method = cls.getMethod(invocation.getMethodName(), invocation.getParameterTypes()); if (method.getReturnType() == void.class) { return null; @@ -239,7 +240,7 @@ public class RpcUtils { public static long getTimeout(Invocation invocation, long defaultTimeout) { long timeout = defaultTimeout; Object genericTimeout = invocation.getObjectAttachmentWithoutConvert(TIMEOUT_ATTACHMENT_KEY); - if(genericTimeout == null) { + if (genericTimeout == null) { genericTimeout = invocation.getObjectAttachmentWithoutConvert(TIMEOUT_ATTACHMENT_KEY_LOWER); } if (genericTimeout != null) { diff --git a/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/CallbackServiceCodec.java b/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/CallbackServiceCodec.java index c950d135bc..b944a8311a 100644 --- a/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/CallbackServiceCodec.java +++ b/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/CallbackServiceCodec.java @@ -18,7 +18,7 @@ package org.apache.dubbo.rpc.protocol.dubbo; import org.apache.dubbo.common.BaseServiceMetadata; import org.apache.dubbo.common.URL; -import org.apache.dubbo.common.logger.Logger; +import org.apache.dubbo.common.logger.ErrorTypeAwareLogger; import org.apache.dubbo.common.logger.LoggerFactory; import org.apache.dubbo.common.url.component.ServiceConfigURL; import org.apache.dubbo.common.utils.ClassUtils; @@ -52,6 +52,9 @@ import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY; import static org.apache.dubbo.common.constants.CommonConstants.INTERFACE_KEY; import static org.apache.dubbo.common.constants.CommonConstants.METHODS_KEY; import static org.apache.dubbo.common.constants.CommonConstants.VERSION_KEY; +import static org.apache.dubbo.common.constants.LoggerCodeConstants.PROTOCOL_FAILED_DESTROY_INVOKER; +import static org.apache.dubbo.common.constants.LoggerCodeConstants.PROTOCOL_FAILED_LOAD_MODEL; +import static org.apache.dubbo.common.constants.LoggerCodeConstants.PROTOCOL_INCORRECT_PARAMETER_VALUES; import static org.apache.dubbo.rpc.Constants.IS_SERVER_KEY; import static org.apache.dubbo.rpc.protocol.dubbo.Constants.CALLBACK_SERVICE_KEY; import static org.apache.dubbo.rpc.protocol.dubbo.Constants.CALLBACK_SERVICE_PROXY_KEY; @@ -62,7 +65,7 @@ import static org.apache.dubbo.rpc.protocol.dubbo.Constants.IS_CALLBACK_SERVICE; * callback service helper */ public class CallbackServiceCodec { - private static final Logger logger = LoggerFactory.getLogger(CallbackServiceCodec.class); + private static final ErrorTypeAwareLogger logger = LoggerFactory.getErrorTypeAwareLogger(CallbackServiceCodec.class); private static final byte CALLBACK_NONE = 0x0; private static final byte CALLBACK_CREATE = 0x1; @@ -149,7 +152,7 @@ public class CallbackServiceCodec { if (inv.getServiceModel() == null) { //TODO should get scope model from url? moduleModel = ApplicationModel.defaultModel().getDefaultModule(); - logger.error("Unable to get Service Model from Invocation. Please check if your invocation failed! " + + logger.error(PROTOCOL_FAILED_LOAD_MODEL, "", "", "Unable to get Service Model from Invocation. Please check if your invocation failed! " + "This error only happen in UT cases! Invocation:" + inv); } else { moduleModel = inv.getServiceModel().getModuleModel(); @@ -229,7 +232,7 @@ public class CallbackServiceCodec { } invoker.destroy(); } catch (Exception e) { - logger.error(e.getMessage(), e); + logger.error(PROTOCOL_FAILED_DESTROY_INVOKER, "", "", e.getMessage(), e); } // cancel refer, directly remove from the map channel.removeAttribute(proxyCacheKey); @@ -283,7 +286,7 @@ public class CallbackServiceCodec { } channel.setAttribute(countkey, count); } catch (Exception e) { - logger.error(e.getMessage(), e); + logger.error(PROTOCOL_INCORRECT_PARAMETER_VALUES, "", "", e.getMessage(), e); } } @@ -297,7 +300,7 @@ public class CallbackServiceCodec { } channel.setAttribute(countkey, count); } catch (Exception e) { - logger.error(e.getMessage(), e); + logger.error(PROTOCOL_INCORRECT_PARAMETER_VALUES, "", "", e.getMessage(), e); } } @@ -337,7 +340,7 @@ public class CallbackServiceCodec { try { return referOrDestroyCallbackService(channel, url, pts[paraIndex], inv, Integer.parseInt(inv.getAttachment(INV_ATT_CALLBACK_KEY + paraIndex)), true); } catch (Exception e) { - logger.error(e.getMessage(), e); + logger.error(PROTOCOL_FAILED_DESTROY_INVOKER, "", "", e.getMessage(), e); throw new IOException(StringUtils.toString(e)); } case CallbackServiceCodec.CALLBACK_DESTROY: diff --git a/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/DecodeableRpcInvocation.java b/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/DecodeableRpcInvocation.java index 1f7de2e538..c24bd27817 100644 --- a/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/DecodeableRpcInvocation.java +++ b/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/DecodeableRpcInvocation.java @@ -17,7 +17,7 @@ package org.apache.dubbo.rpc.protocol.dubbo; -import org.apache.dubbo.common.logger.Logger; +import org.apache.dubbo.common.logger.ErrorTypeAwareLogger; import org.apache.dubbo.common.logger.LoggerFactory; import org.apache.dubbo.common.serialize.Cleanable; import org.apache.dubbo.common.serialize.ObjectInput; @@ -52,12 +52,13 @@ import static org.apache.dubbo.common.constants.CommonConstants.DUBBO_VERSION_KE import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY; import static org.apache.dubbo.common.constants.CommonConstants.PATH_KEY; import static org.apache.dubbo.common.constants.CommonConstants.VERSION_KEY; +import static org.apache.dubbo.common.constants.LoggerCodeConstants.PROTOCOL_FAILED_DECODE; import static org.apache.dubbo.rpc.Constants.SERIALIZATION_ID_KEY; import static org.apache.dubbo.rpc.Constants.SERIALIZATION_SECURITY_CHECK_KEY; public class DecodeableRpcInvocation extends RpcInvocation implements Codec, Decodeable { - private static final Logger log = LoggerFactory.getLogger(DecodeableRpcInvocation.class); + private static final ErrorTypeAwareLogger log = LoggerFactory.getErrorTypeAwareLogger(DecodeableRpcInvocation.class); private Channel channel; @@ -92,7 +93,7 @@ public class DecodeableRpcInvocation extends RpcInvocation implements Codec, Dec decode(channel, inputStream); } catch (Throwable e) { if (log.isWarnEnabled()) { - log.warn("Decode rpc invocation failed: " + e.getMessage(), e); + log.warn(PROTOCOL_FAILED_DECODE, "", "", "Decode rpc invocation failed: " + e.getMessage(), e); } request.setBroken(true); request.setData(e); diff --git a/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/DecodeableRpcResult.java b/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/DecodeableRpcResult.java index 3c33fcad3f..145f3a2fb9 100644 --- a/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/DecodeableRpcResult.java +++ b/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/DecodeableRpcResult.java @@ -18,7 +18,7 @@ package org.apache.dubbo.rpc.protocol.dubbo; import org.apache.dubbo.common.config.Configuration; import org.apache.dubbo.common.config.ConfigurationUtils; -import org.apache.dubbo.common.logger.Logger; +import org.apache.dubbo.common.logger.ErrorTypeAwareLogger; import org.apache.dubbo.common.logger.LoggerFactory; import org.apache.dubbo.common.serialize.Cleanable; import org.apache.dubbo.common.serialize.ObjectInput; @@ -40,12 +40,13 @@ import java.io.InputStream; import java.io.OutputStream; import java.lang.reflect.Type; +import static org.apache.dubbo.common.constants.LoggerCodeConstants.PROTOCOL_FAILED_DECODE; import static org.apache.dubbo.rpc.Constants.SERIALIZATION_ID_KEY; import static org.apache.dubbo.rpc.Constants.SERIALIZATION_SECURITY_CHECK_KEY; public class DecodeableRpcResult extends AppResponse implements Codec, Decodeable { - private static final Logger log = LoggerFactory.getLogger(DecodeableRpcResult.class); + private static final ErrorTypeAwareLogger log = LoggerFactory.getErrorTypeAwareLogger(DecodeableRpcResult.class); private Channel channel; @@ -87,7 +88,7 @@ public class DecodeableRpcResult extends AppResponse implements Codec, Decodeabl Thread.currentThread().setContextClassLoader(invocation.getServiceModel().getClassLoader()); } ObjectInput in = CodecSupport.getSerialization(channel.getUrl(), serializationType) - .deserialize(channel.getUrl(), input); + .deserialize(channel.getUrl(), input); byte flag = in.readByte(); switch (flag) { @@ -138,7 +139,7 @@ public class DecodeableRpcResult extends AppResponse implements Codec, Decodeabl decode(channel, inputStream); } catch (Throwable e) { if (log.isWarnEnabled()) { - log.warn("Decode rpc result failed: " + e.getMessage(), e); + log.warn(PROTOCOL_FAILED_DECODE, "", "", "Decode rpc result failed: " + e.getMessage(), e); } response.setStatus(Response.CLIENT_ERROR); response.setErrorMessage(StringUtils.toString(e)); diff --git a/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/DubboCodec.java b/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/DubboCodec.java index 913138dc66..71402c524f 100644 --- a/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/DubboCodec.java +++ b/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/DubboCodec.java @@ -19,7 +19,7 @@ package org.apache.dubbo.rpc.protocol.dubbo; import org.apache.dubbo.common.Version; import org.apache.dubbo.common.io.Bytes; import org.apache.dubbo.common.io.UnsafeByteArrayInputStream; -import org.apache.dubbo.common.logger.Logger; +import org.apache.dubbo.common.logger.ErrorTypeAwareLogger; import org.apache.dubbo.common.logger.LoggerFactory; import org.apache.dubbo.common.serialize.ObjectInput; import org.apache.dubbo.common.serialize.ObjectOutput; @@ -44,6 +44,7 @@ import static org.apache.dubbo.common.constants.CommonConstants.DUBBO_VERSION_KE import static org.apache.dubbo.common.constants.CommonConstants.INTERFACE_KEY; import static org.apache.dubbo.common.constants.CommonConstants.PATH_KEY; import static org.apache.dubbo.common.constants.CommonConstants.VERSION_KEY; +import static org.apache.dubbo.common.constants.LoggerCodeConstants.PROTOCOL_FAILED_DECODE; import static org.apache.dubbo.rpc.protocol.dubbo.Constants.DECODE_IN_IO_THREAD_KEY; import static org.apache.dubbo.rpc.protocol.dubbo.Constants.DEFAULT_DECODE_IN_IO_THREAD; @@ -62,7 +63,7 @@ public class DubboCodec extends ExchangeCodec { public static final byte RESPONSE_NULL_VALUE_WITH_ATTACHMENTS = 5; public static final Object[] EMPTY_OBJECT_ARRAY = new Object[0]; public static final Class[] EMPTY_CLASS_ARRAY = new Class[0]; - private static final Logger log = LoggerFactory.getLogger(DubboCodec.class); + private static final ErrorTypeAwareLogger log = LoggerFactory.getErrorTypeAwareLogger(DubboCodec.class); private CallbackServiceCodec callbackServiceCodec; private FrameworkModel frameworkModel; @@ -101,12 +102,12 @@ public class DubboCodec extends ExchangeCodec { DecodeableRpcResult result; if (channel.getUrl().getParameter(DECODE_IN_IO_THREAD_KEY, DEFAULT_DECODE_IN_IO_THREAD)) { result = new DecodeableRpcResult(channel, res, is, - (Invocation) getRequestData(id), proto); + (Invocation) getRequestData(id), proto); result.decode(); } else { result = new DecodeableRpcResult(channel, res, - new UnsafeByteArrayInputStream(readMessageData(is)), - (Invocation) getRequestData(id), proto); + new UnsafeByteArrayInputStream(readMessageData(is)), + (Invocation) getRequestData(id), proto); } data = result; } @@ -117,7 +118,7 @@ public class DubboCodec extends ExchangeCodec { } } catch (Throwable t) { if (log.isWarnEnabled()) { - log.warn("Decode response failed: " + t.getMessage(), t); + log.warn(PROTOCOL_FAILED_DECODE, "", "", "Decode response failed: " + t.getMessage(), t); } res.setStatus(Response.CLIENT_ERROR); res.setErrorMessage(StringUtils.toString(t)); @@ -149,7 +150,7 @@ public class DubboCodec extends ExchangeCodec { inv.decode(); } else { inv = new DecodeableRpcInvocation(frameworkModel, channel, req, - new UnsafeByteArrayInputStream(readMessageData(is)), proto); + new UnsafeByteArrayInputStream(readMessageData(is)), proto); } data = inv; } diff --git a/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/DubboInvoker.java b/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/DubboInvoker.java index 9c426419bf..3fe1cddfe0 100644 --- a/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/DubboInvoker.java +++ b/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/DubboInvoker.java @@ -52,6 +52,7 @@ import static org.apache.dubbo.common.constants.CommonConstants.TIMEOUT_ATTACHME import static org.apache.dubbo.common.constants.CommonConstants.TIMEOUT_KEY; import static org.apache.dubbo.common.constants.CommonConstants.TIME_COUNTDOWN_KEY; import static org.apache.dubbo.common.constants.CommonConstants.VERSION_KEY; +import static org.apache.dubbo.common.constants.LoggerCodeConstants.PROTOCOL_ERROR_CLOSE_CLIENT; import static org.apache.dubbo.rpc.Constants.TOKEN_KEY; /** @@ -181,7 +182,7 @@ public class DubboInvoker extends AbstractInvoker { client.close(serverShutdownTimeout); } } catch (Throwable t) { - logger.warn(t.getMessage(), t); + logger.warn(PROTOCOL_ERROR_CLOSE_CLIENT, "", "", t.getMessage(), t); } } diff --git a/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/DubboProtocol.java b/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/DubboProtocol.java index c4e238c38d..7952143f62 100644 --- a/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/DubboProtocol.java +++ b/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/DubboProtocol.java @@ -66,6 +66,10 @@ import static org.apache.dubbo.common.constants.CommonConstants.LAZY_CONNECT_KEY import static org.apache.dubbo.common.constants.CommonConstants.PATH_KEY; import static org.apache.dubbo.common.constants.CommonConstants.STUB_EVENT_KEY; import static org.apache.dubbo.common.constants.CommonConstants.VERSION_KEY; +import static org.apache.dubbo.common.constants.LoggerCodeConstants.PROTOCOL_ERROR_CLOSE_CLIENT; +import static org.apache.dubbo.common.constants.LoggerCodeConstants.PROTOCOL_ERROR_CLOSE_SERVER; +import static org.apache.dubbo.common.constants.LoggerCodeConstants.PROTOCOL_FAILED_REFER_INVOKER; +import static org.apache.dubbo.common.constants.LoggerCodeConstants.PROTOCOL_UNSUPPORTED; import static org.apache.dubbo.remoting.Constants.CHANNEL_READONLYEVENT_SENT_KEY; import static org.apache.dubbo.remoting.Constants.CLIENT_KEY; import static org.apache.dubbo.remoting.Constants.CODEC_KEY; @@ -141,7 +145,7 @@ public class DubboProtocol extends AbstractProtocol { } } if (!hasMethod) { - logger.warn(new IllegalStateException("The methodName " + inv.getMethodName() + logger.warn(PROTOCOL_FAILED_REFER_INVOKER, "", "", new IllegalStateException("The methodName " + inv.getMethodName() + " not found in callback service interface ,invoke will be ignored." + " please update the api interface. url is:" + invoker.getUrl()) + " ,invocation is :" + inv); @@ -185,7 +189,7 @@ public class DubboProtocol extends AbstractProtocol { } received(channel, invocation); } catch (Throwable t) { - logger.warn("Failed to invoke event method " + invocation.getMethodName() + "(), cause: " + t.getMessage(), t); + logger.warn(PROTOCOL_FAILED_REFER_INVOKER, "", "", "Failed to invoke event method " + invocation.getMethodName() + "(), cause: " + t.getMessage(), t); } } } @@ -316,8 +320,8 @@ public class DubboProtocol extends AbstractProtocol { String stubServiceMethods = url.getParameter(STUB_EVENT_METHODS_KEY); if (stubServiceMethods == null || stubServiceMethods.length() == 0) { if (logger.isWarnEnabled()) { - logger.warn(new IllegalStateException("consumer [" + url.getParameter(INTERFACE_KEY) + - "], has set stub proxy support event ,but no stub methods founded.")); + logger.warn(PROTOCOL_UNSUPPORTED, "", "", "consumer [" + url.getParameter(INTERFACE_KEY) + + "], has set stub proxy support event ,but no stub methods founded."); } } @@ -636,7 +640,7 @@ public class DubboProtocol extends AbstractProtocol { server.close(getServerShutdownTimeout(protocolServer)); } catch (Throwable t) { - logger.warn("Close dubbo server [" + server.getLocalAddress() + "] failed: " + t.getMessage(), t); + logger.warn(PROTOCOL_ERROR_CLOSE_SERVER, "", "", "Close dubbo server [" + server.getLocalAddress() + "] failed: " + t.getMessage(), t); } } serverMap.clear(); @@ -685,7 +689,7 @@ public class DubboProtocol extends AbstractProtocol { */ } catch (Throwable t) { - logger.warn(t.getMessage(), t); + logger.warn(PROTOCOL_ERROR_CLOSE_CLIENT, "", "", t.getMessage(), t); } } diff --git a/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/LazyConnectExchangeClient.java b/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/LazyConnectExchangeClient.java index 7e2d5332c8..7454df2b8f 100644 --- a/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/LazyConnectExchangeClient.java +++ b/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/LazyConnectExchangeClient.java @@ -18,7 +18,7 @@ package org.apache.dubbo.rpc.protocol.dubbo; import org.apache.dubbo.common.Parameters; import org.apache.dubbo.common.URL; -import org.apache.dubbo.common.logger.Logger; +import org.apache.dubbo.common.logger.ErrorTypeAwareLogger; import org.apache.dubbo.common.logger.LoggerFactory; import org.apache.dubbo.common.utils.NetUtils; import org.apache.dubbo.remoting.ChannelHandler; @@ -36,6 +36,7 @@ import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; import static org.apache.dubbo.common.constants.CommonConstants.LAZY_CONNECT_KEY; +import static org.apache.dubbo.common.constants.LoggerCodeConstants.PROTOCOL_FAILED_REQUEST; import static org.apache.dubbo.remoting.Constants.SEND_RECONNECT_KEY; import static org.apache.dubbo.rpc.protocol.dubbo.Constants.DEFAULT_LAZY_REQUEST_WITH_WARNING; import static org.apache.dubbo.rpc.protocol.dubbo.Constants.LAZY_REQUEST_WITH_WARNING_KEY; @@ -46,7 +47,7 @@ import static org.apache.dubbo.rpc.protocol.dubbo.Constants.LAZY_REQUEST_WITH_WA @SuppressWarnings("deprecation") final class LazyConnectExchangeClient implements ExchangeClient { - private final static Logger logger = LoggerFactory.getLogger(LazyConnectExchangeClient.class); + private final static ErrorTypeAwareLogger logger = LoggerFactory.getErrorTypeAwareLogger(LazyConnectExchangeClient.class); private final boolean requestWithWarning; private final URL url; private final ExchangeHandler requestHandler; @@ -130,7 +131,7 @@ final class LazyConnectExchangeClient implements ExchangeClient { private void warning() { if (requestWithWarning) { if (warningCount.get() % warningPeriod == 0) { - logger.warn(url.getAddress() + " " + url.getServiceKey() + " safe guard client , should not be called ,must have a bug."); + logger.warn(PROTOCOL_FAILED_REQUEST, "", "", url.getAddress() + " " + url.getServiceKey() + " safe guard client , should not be called ,must have a bug."); } warningCount.incrementAndGet(); } diff --git a/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/ReferenceCountExchangeClient.java b/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/ReferenceCountExchangeClient.java index b0a8f08e2f..18eeceb2b0 100644 --- a/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/ReferenceCountExchangeClient.java +++ b/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/ReferenceCountExchangeClient.java @@ -19,7 +19,7 @@ package org.apache.dubbo.rpc.protocol.dubbo; import org.apache.dubbo.common.Parameters; import org.apache.dubbo.common.URL; -import org.apache.dubbo.common.logger.Logger; +import org.apache.dubbo.common.logger.ErrorTypeAwareLogger; import org.apache.dubbo.common.logger.LoggerFactory; import org.apache.dubbo.remoting.ChannelHandler; import org.apache.dubbo.remoting.RemotingException; @@ -32,6 +32,7 @@ import java.util.concurrent.ExecutorService; import java.util.concurrent.atomic.AtomicInteger; import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_SERVER_SHUTDOWN_TIMEOUT; +import static org.apache.dubbo.common.constants.LoggerCodeConstants.PROTOCOL_FAILED_REQUEST; /** * dubbo protocol support class. @@ -39,7 +40,7 @@ import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_SERVER_S @SuppressWarnings("deprecation") final class ReferenceCountExchangeClient implements ExchangeClient { - private final static Logger logger = LoggerFactory.getLogger(ReferenceCountExchangeClient.class); + private final static ErrorTypeAwareLogger logger = LoggerFactory.getErrorTypeAwareLogger(ReferenceCountExchangeClient.class); private final URL url; private final AtomicInteger referenceCount = new AtomicInteger(0); private final AtomicInteger disconnectCount = new AtomicInteger(0); @@ -199,7 +200,7 @@ final class ReferenceCountExchangeClient implements ExchangeClient { private void replaceWithLazyClient() { // start warning at second replaceWithLazyClient() if (disconnectCount.getAndIncrement() % warningPeriod == 1) { - logger.warn(url.getAddress() + " " + url.getServiceKey() + " safe guard client , should not be called ,must have a bug."); + logger.warn(PROTOCOL_FAILED_REQUEST, "", "", url.getAddress() + " " + url.getServiceKey() + " safe guard client , should not be called ,must have a bug."); } // the order of judgment in the if statement cannot be changed. diff --git a/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/filter/FutureFilter.java b/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/filter/FutureFilter.java index 9d9e205316..b35e00d8d9 100644 --- a/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/filter/FutureFilter.java +++ b/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/filter/FutureFilter.java @@ -18,7 +18,7 @@ package org.apache.dubbo.rpc.protocol.dubbo.filter; import org.apache.dubbo.common.constants.CommonConstants; import org.apache.dubbo.common.extension.Activate; -import org.apache.dubbo.common.logger.Logger; +import org.apache.dubbo.common.logger.ErrorTypeAwareLogger; import org.apache.dubbo.common.logger.LoggerFactory; import org.apache.dubbo.rpc.Invocation; import org.apache.dubbo.rpc.Invoker; @@ -33,6 +33,7 @@ import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import static org.apache.dubbo.common.constants.CommonConstants.$INVOKE; +import static org.apache.dubbo.common.constants.LoggerCodeConstants.PROTOCOL_FAILED_REQUEST; import static org.apache.dubbo.rpc.protocol.dubbo.Constants.ASYNC_METHOD_INFO; /** @@ -41,7 +42,7 @@ import static org.apache.dubbo.rpc.protocol.dubbo.Constants.ASYNC_METHOD_INFO; @Activate(group = CommonConstants.CONSUMER) public class FutureFilter implements ClusterFilter, ClusterFilter.Listener { - protected static final Logger logger = LoggerFactory.getLogger(FutureFilter.class); + protected static final ErrorTypeAwareLogger logger = LoggerFactory.getErrorTypeAwareLogger(FutureFilter.class); @Override public Result invoke(final Invoker invoker, final Invocation invocation) throws RpcException { @@ -179,10 +180,10 @@ public class FutureFilter implements ClusterFilter, ClusterFilter.Listener { } onthrowMethod.invoke(onthrowInst, params); } catch (Throwable e) { - logger.error(invocation.getMethodName() + ".call back method invoke error . callback method :" + onthrowMethod + ", url:" + invoker.getUrl(), e); + logger.error(PROTOCOL_FAILED_REQUEST, "", "", invocation.getMethodName() + ".call back method invoke error . callback method :" + onthrowMethod + ", url:" + invoker.getUrl(), e); } } else { - logger.error(invocation.getMethodName() + ".call back method invoke error . callback method :" + onthrowMethod + ", url:" + invoker.getUrl(), exception); + logger.error(PROTOCOL_FAILED_REQUEST, "", "", invocation.getMethodName() + ".call back method invoke error . callback method :" + onthrowMethod + ", url:" + invoker.getUrl(), exception); } } diff --git a/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/filter/TraceFilter.java b/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/filter/TraceFilter.java index 3247436179..3bf847dd6d 100644 --- a/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/filter/TraceFilter.java +++ b/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/filter/TraceFilter.java @@ -18,7 +18,7 @@ package org.apache.dubbo.rpc.protocol.dubbo.filter; import org.apache.dubbo.common.constants.CommonConstants; import org.apache.dubbo.common.extension.Activate; -import org.apache.dubbo.common.logger.Logger; +import org.apache.dubbo.common.logger.ErrorTypeAwareLogger; import org.apache.dubbo.common.logger.LoggerFactory; import org.apache.dubbo.common.utils.CollectionUtils; import org.apache.dubbo.common.utils.ConcurrentHashSet; @@ -39,13 +39,15 @@ import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; import java.util.concurrent.atomic.AtomicInteger; +import static org.apache.dubbo.common.constants.LoggerCodeConstants.PROTOCOL_FAILED_PARSE; + /** * TraceFilter */ @Activate(group = CommonConstants.PROVIDER) public class TraceFilter implements Filter { - private static final Logger logger = LoggerFactory.getLogger(TraceFilter.class); + private static final ErrorTypeAwareLogger logger = LoggerFactory.getErrorTypeAwareLogger(TraceFilter.class); private static final String TRACE_MAX = "trace.max"; @@ -113,7 +115,7 @@ public class TraceFilter implements Filter { } } catch (Throwable e) { channels.remove(channel); - logger.warn(e.getMessage(), e); + logger.warn(PROTOCOL_FAILED_PARSE, "", "", e.getMessage(), e); } } else { channels.remove(channel);