This is an automated email from the ASF dual-hosted git repository.

albumenj pushed a commit to branch 3.3
in repository https://gitbox.apache.org/repos/asf/dubbo.git


The following commit(s) were added to refs/heads/3.3 by this push:
     new 737ff1dcda Add fluent logger to simplify logging (#14484)
737ff1dcda is described below

commit 737ff1dcdaf5f4a64151985954fce4ad2ec60581
Author: Sean Yang <[email protected]>
AuthorDate: Tue Aug 20 18:02:33 2024 +0800

    Add fluent logger to simplify logging (#14484)
---
 .../apache/dubbo/common/logger/FluentLogger.java   | 134 +++++
 .../dubbo/common/logger/FluentLoggerImpl.java      | 667 +++++++++++++++++++++
 .../tri/h12/AbstractServerTransportListener.java   |  59 +-
 .../tri/rest/filter/DefaultFilterChain.java        |  18 +-
 .../mapping/DefaultRequestMappingRegistry.java     |  13 +-
 5 files changed, 822 insertions(+), 69 deletions(-)

diff --git 
a/dubbo-common/src/main/java/org/apache/dubbo/common/logger/FluentLogger.java 
b/dubbo-common/src/main/java/org/apache/dubbo/common/logger/FluentLogger.java
new file mode 100644
index 0000000000..f68739fe49
--- /dev/null
+++ 
b/dubbo-common/src/main/java/org/apache/dubbo/common/logger/FluentLogger.java
@@ -0,0 +1,134 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.dubbo.common.logger;
+
+import java.util.function.Supplier;
+
+public interface FluentLogger {
+
+    FluentLogger cause(String cause);
+
+    FluentLogger more(String extendedInformation);
+
+    FluentLogger msg(String msg);
+
+    FluentLogger msg(String msg, Object... args);
+
+    FluentLogger msg(Supplier<String> supplier);
+
+    void trace();
+
+    void trace(Throwable t);
+
+    void trace(String msg);
+
+    void trace(String msg, Object... args);
+
+    void trace(String msg, Throwable t);
+
+    void debug();
+
+    void debug(Throwable t);
+
+    void debug(String msg);
+
+    void debug(String msg, Object... args);
+
+    void debug(String msg, Throwable t);
+
+    void info();
+
+    void info(Throwable t);
+
+    void info(String msg, Object... args);
+
+    void info(String msg);
+
+    void info(String msg, Throwable t);
+
+    void internalWarn();
+
+    void internalWarn(Throwable t);
+
+    void internalWarn(String msg);
+
+    void internalWarn(String msg, Object... args);
+
+    void internalWarn(String msg, Throwable t);
+
+    void warn(String code);
+
+    void warn(String code, Throwable t);
+
+    void warn(String code, String msg, Object... args);
+
+    void warn(String code, String msg, Throwable t);
+
+    void internalError();
+
+    void internalError(Throwable t);
+
+    void internalError(String msg);
+
+    void internalError(String msg, Object... args);
+
+    void internalError(String msg, Throwable t);
+
+    void error(String code);
+
+    void error(String code, Throwable t);
+
+    void error(String code, String msg, Object... args);
+
+    void error(String code, String msg, Throwable t);
+
+    void log(Level level);
+
+    void log(Level level, Throwable t);
+
+    void log(Level level, String msg);
+
+    void log(Level level, String msg, Object... args);
+
+    void log(Level level, String msg, Throwable t);
+
+    void log(String code, Level level);
+
+    void log(String code, Level level, String msg, Object... args);
+
+    void log(String code, Level level, String msg, Throwable t);
+
+    boolean isTraceEnabled();
+
+    boolean isDebugEnabled();
+
+    boolean isInfoEnabled();
+
+    boolean isWarnEnabled();
+
+    boolean isErrorEnabled();
+
+    static FluentLogger of(Class<?> key) {
+        return new FluentLoggerImpl(key);
+    }
+
+    static FluentLogger of(String key) {
+        return new FluentLoggerImpl(key);
+    }
+
+    interface S extends Supplier<String> {}
+}
diff --git 
a/dubbo-common/src/main/java/org/apache/dubbo/common/logger/FluentLoggerImpl.java
 
b/dubbo-common/src/main/java/org/apache/dubbo/common/logger/FluentLoggerImpl.java
new file mode 100644
index 0000000000..3184493b8b
--- /dev/null
+++ 
b/dubbo-common/src/main/java/org/apache/dubbo/common/logger/FluentLoggerImpl.java
@@ -0,0 +1,667 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.dubbo.common.logger;
+
+import org.apache.dubbo.common.logger.helpers.FormattingTuple;
+import org.apache.dubbo.common.logger.helpers.MessageFormatter;
+import org.apache.dubbo.common.utils.StringUtils;
+
+import java.util.function.Supplier;
+
+import static 
org.apache.dubbo.common.constants.LoggerCodeConstants.INTERNAL_ERROR;
+
+final class FluentLoggerImpl implements FluentLogger {
+
+    private final ErrorTypeAwareLogger delegate;
+    private final FluentLoggerImpl root;
+
+    private String cause = StringUtils.EMPTY_STRING;
+    private String extendedInformation = StringUtils.EMPTY_STRING;
+    private Supplier<String> messageSupplier;
+    private String message;
+    private Object[] args;
+
+    FluentLoggerImpl(Class<?> key) {
+        delegate = LoggerFactory.getErrorTypeAwareLogger(key);
+        root = this;
+    }
+
+    FluentLoggerImpl(String key) {
+        delegate = LoggerFactory.getErrorTypeAwareLogger(key);
+        root = this;
+    }
+
+    private FluentLoggerImpl(FluentLoggerImpl logger) {
+        delegate = logger.delegate;
+        root = logger;
+    }
+
+    @Override
+    public FluentLogger cause(String cause) {
+        if (cause == null) {
+            return this;
+        }
+        FluentLoggerImpl logger = getLogger();
+        logger.cause = cause;
+        return logger;
+    }
+
+    @Override
+    public FluentLogger more(String extendedInformation) {
+        if (extendedInformation == null) {
+            return this;
+        }
+        FluentLoggerImpl logger = getLogger();
+        logger.extendedInformation = extendedInformation;
+        return logger;
+    }
+
+    @Override
+    public FluentLogger msg(String message) {
+        FluentLoggerImpl logger = getLogger();
+        logger.message = message;
+        return logger;
+    }
+
+    @Override
+    public FluentLogger msg(String message, Object... args) {
+        FluentLoggerImpl logger = getLogger();
+        logger.message = message;
+        logger.args = args;
+        return logger;
+    }
+
+    @Override
+    public FluentLogger msg(Supplier<String> supplier) {
+        FluentLoggerImpl logger = getLogger();
+        logger.messageSupplier = supplier;
+        return logger;
+    }
+
+    @Override
+    public void trace() {
+        if (message != null) {
+            if (args != null && args.length > 0) {
+                if (delegate.isTraceEnabled()) {
+                    delegate.trace(message, formatArgs(args));
+                }
+            } else {
+                delegate.trace(message);
+            }
+        } else if (messageSupplier != null) {
+            if (delegate.isTraceEnabled()) {
+                delegate.trace(messageSupplier.get());
+            }
+        } else {
+            warnMessageMissing();
+        }
+    }
+
+    @Override
+    public void trace(Throwable t) {
+        if (message != null) {
+            int len = args == null ? 0 : args.length;
+            if (len > 0) {
+                if (delegate.isTraceEnabled()) {
+                    Object[] arr = new Object[len + 1];
+                    System.arraycopy(args, 0, arr, 0, len);
+                    arr[len] = t;
+                    delegate.trace(message, formatArgs(arr));
+                }
+            } else {
+                delegate.trace(message, t);
+            }
+        } else if (messageSupplier != null) {
+            if (delegate.isTraceEnabled()) {
+                delegate.trace(messageSupplier.get(), t);
+            }
+        } else {
+            warnMessageMissing();
+        }
+    }
+
+    @Override
+    public void trace(String message) {
+        delegate.trace(message);
+    }
+
+    @Override
+    public void trace(String message, Object... args) {
+        if (args == null || args.length == 0) {
+            delegate.trace(message);
+        } else if (delegate.isTraceEnabled()) {
+            delegate.trace(message, formatArgs(args));
+        }
+    }
+
+    @Override
+    public void trace(String message, Throwable t) {
+        delegate.trace(message, t);
+    }
+
+    @Override
+    public void debug() {
+        if (message != null) {
+            if (args != null && args.length > 0) {
+                if (delegate.isDebugEnabled()) {
+                    delegate.debug(message, formatArgs(args));
+                }
+            } else {
+                delegate.debug(message);
+            }
+        } else if (messageSupplier != null) {
+            if (delegate.isDebugEnabled()) {
+                delegate.debug(messageSupplier.get());
+            }
+        } else {
+            warnMessageMissing();
+        }
+    }
+
+    @Override
+    public void debug(Throwable t) {
+        if (message != null) {
+            int len = args == null ? 0 : args.length;
+            if (len > 0) {
+                if (delegate.isDebugEnabled()) {
+                    Object[] arr = new Object[len + 1];
+                    System.arraycopy(args, 0, arr, 0, len);
+                    arr[len] = t;
+                    delegate.debug(message, formatArgs(arr));
+                }
+            } else {
+                delegate.debug(message, t);
+            }
+        } else if (messageSupplier != null) {
+            if (delegate.isDebugEnabled()) {
+                delegate.debug(messageSupplier.get(), t);
+            }
+        } else {
+            warnMessageMissing();
+        }
+    }
+
+    @Override
+    public void debug(String message) {
+        delegate.debug(message);
+    }
+
+    @Override
+    public void debug(String message, Object... args) {
+        if (args == null || args.length == 0) {
+            delegate.debug(message);
+        } else if (delegate.isDebugEnabled()) {
+            delegate.debug(message, formatArgs(args));
+        }
+    }
+
+    @Override
+    public void debug(String message, Throwable t) {
+        delegate.debug(message, t);
+    }
+
+    @Override
+    public void info() {
+        if (message != null) {
+            if (args != null && args.length > 0) {
+                if (delegate.isInfoEnabled()) {
+                    delegate.info(message, formatArgs(args));
+                }
+            } else {
+                delegate.info(message);
+            }
+        } else if (messageSupplier != null) {
+            if (delegate.isInfoEnabled()) {
+                delegate.info(messageSupplier.get());
+            }
+        } else {
+            warnMessageMissing();
+        }
+    }
+
+    @Override
+    public void info(Throwable t) {
+        if (message != null) {
+            int len = args == null ? 0 : args.length;
+            if (len > 0) {
+                if (delegate.isInfoEnabled()) {
+                    Object[] arr = new Object[len + 1];
+                    System.arraycopy(args, 0, arr, 0, len);
+                    arr[len] = t;
+                    delegate.info(message, formatArgs(arr));
+                }
+            } else {
+                delegate.info(message, t);
+            }
+        } else if (messageSupplier != null) {
+            if (delegate.isInfoEnabled()) {
+                delegate.info(messageSupplier.get(), t);
+            }
+        } else {
+            warnMessageMissing();
+        }
+    }
+
+    @Override
+    public void info(String message, Object... args) {
+        if (args == null || args.length == 0) {
+            delegate.info(message);
+        } else if (delegate.isInfoEnabled()) {
+            delegate.info(message, formatArgs(args));
+        }
+    }
+
+    @Override
+    public void info(String message) {
+        delegate.info(message);
+    }
+
+    @Override
+    public void info(String message, Throwable t) {
+        delegate.info(message, t);
+    }
+
+    @Override
+    public void internalWarn() {
+        warn(INTERNAL_ERROR);
+    }
+
+    @Override
+    public void internalWarn(Throwable t) {
+        warn(INTERNAL_ERROR, t);
+    }
+
+    @Override
+    public void internalWarn(String message) {
+        warn(INTERNAL_ERROR, message);
+    }
+
+    @Override
+    public void internalWarn(String message, Object... args) {
+        warn(INTERNAL_ERROR, message, args);
+    }
+
+    @Override
+    public void internalWarn(String message, Throwable t) {
+        warn(INTERNAL_ERROR, message, t);
+    }
+
+    @Override
+    public void warn(String code) {
+        if (message != null) {
+            if (args != null && args.length > 0) {
+                formatAndWarn(code, message, args);
+            } else {
+                delegate.warn(code, cause, extendedInformation, message);
+            }
+        } else if (messageSupplier != null) {
+            if (delegate.isWarnEnabled()) {
+                delegate.warn(code, cause, extendedInformation, 
messageSupplier.get());
+            }
+        } else {
+            warnMessageMissing();
+        }
+    }
+
+    @Override
+    public void warn(String code, Throwable t) {
+        if (message != null) {
+            if (args != null && args.length > 0) {
+                if (delegate.isWarnEnabled()) {
+                    FormattingTuple tuple = 
MessageFormatter.arrayFormat(message, formatArgs(args));
+                    delegate.warn(code, cause, extendedInformation, 
tuple.getMessage(), t);
+                }
+            } else {
+                delegate.warn(code, cause, extendedInformation, message, t);
+            }
+        } else if (messageSupplier != null && delegate.isWarnEnabled()) {
+            delegate.warn(code, cause, extendedInformation, 
messageSupplier.get(), t);
+        }
+    }
+
+    @Override
+    public void warn(String code, String message, Object... args) {
+        if (args == null || args.length == 0) {
+            delegate.warn(code, cause, extendedInformation, message);
+            return;
+        }
+        formatAndWarn(code, message, args);
+    }
+
+    private void formatAndWarn(String code, String message, Object... args) {
+        if (!delegate.isWarnEnabled()) {
+            return;
+        }
+        FormattingTuple tuple = MessageFormatter.arrayFormat(message, 
formatArgs(args));
+        if (tuple.getThrowable() == null) {
+            delegate.warn(code, cause, extendedInformation, 
tuple.getMessage());
+        } else {
+            delegate.warn(code, cause, extendedInformation, 
tuple.getMessage(), tuple.getThrowable());
+        }
+    }
+
+    @Override
+    public void warn(String code, String message, Throwable t) {
+        delegate.warn(code, cause, extendedInformation, message, t);
+    }
+
+    @Override
+    public void internalError() {
+        error(INTERNAL_ERROR);
+    }
+
+    @Override
+    public void internalError(Throwable t) {
+        error(INTERNAL_ERROR, t);
+    }
+
+    @Override
+    public void internalError(String message) {
+        error(INTERNAL_ERROR, message);
+    }
+
+    @Override
+    public void internalError(String message, Object... args) {
+        error(INTERNAL_ERROR, message, args);
+    }
+
+    @Override
+    public void internalError(String message, Throwable t) {
+        error(INTERNAL_ERROR, message, t);
+    }
+
+    @Override
+    public void error(String code) {
+        if (message != null) {
+            if (args != null && args.length > 0) {
+                formatAndError(code, message, args);
+            } else {
+                delegate.error(code, cause, extendedInformation, message);
+            }
+        } else if (messageSupplier != null) {
+            if (delegate.isErrorEnabled()) {
+                delegate.error(code, cause, extendedInformation, 
messageSupplier.get());
+            }
+        } else {
+            warnMessageMissing();
+        }
+    }
+
+    @Override
+    public void error(String code, Throwable t) {
+        if (message != null) {
+            if (args != null && args.length > 0) {
+                if (delegate.isErrorEnabled()) {
+                    FormattingTuple tuple = 
MessageFormatter.arrayFormat(message, formatArgs(args));
+                    delegate.error(code, cause, extendedInformation, 
tuple.getMessage(), t);
+                }
+            } else {
+                delegate.error(code, cause, extendedInformation, message, t);
+            }
+        } else if (messageSupplier != null) {
+            if (delegate.isErrorEnabled()) {
+                delegate.error(code, cause, extendedInformation, 
messageSupplier.get(), t);
+            }
+        } else {
+            warnMessageMissing();
+        }
+    }
+
+    @Override
+    public void error(String code, String message, Object... args) {
+        if (args == null || args.length == 0) {
+            delegate.error(code, cause, extendedInformation, message);
+            return;
+        }
+        formatAndError(code, message, args);
+    }
+
+    private void formatAndError(String code, String message, Object... args) {
+        if (!delegate.isErrorEnabled()) {
+            return;
+        }
+        FormattingTuple tuple = MessageFormatter.arrayFormat(message, 
formatArgs(args));
+        if (tuple.getThrowable() == null) {
+            delegate.error(code, cause, extendedInformation, 
tuple.getMessage());
+        } else {
+            delegate.error(code, cause, extendedInformation, 
tuple.getMessage(), tuple.getThrowable());
+        }
+    }
+
+    @Override
+    public void error(String code, String message, Throwable t) {
+        delegate.error(code, cause, extendedInformation, message, t);
+    }
+
+    @Override
+    public void log(Level level) {
+        switch (level) {
+            case TRACE:
+                trace();
+                break;
+            case DEBUG:
+                debug();
+                break;
+            case INFO:
+                info();
+                break;
+            case WARN:
+                internalWarn();
+                break;
+            case ERROR:
+                internalError();
+                break;
+            default:
+        }
+    }
+
+    @Override
+    public void log(Level level, Throwable t) {
+        switch (level) {
+            case TRACE:
+                trace(t);
+                break;
+            case DEBUG:
+                debug(t);
+                break;
+            case INFO:
+                info(t);
+                break;
+            case WARN:
+                internalWarn(t);
+                break;
+            case ERROR:
+                internalError(t);
+                break;
+            default:
+        }
+    }
+
+    @Override
+    public void log(Level level, String msg) {
+        switch (level) {
+            case TRACE:
+                trace(msg);
+                break;
+            case DEBUG:
+                debug(msg);
+                break;
+            case INFO:
+                info(msg);
+                break;
+            case WARN:
+                internalWarn(msg);
+                break;
+            case ERROR:
+                internalError(msg);
+                break;
+            default:
+        }
+    }
+
+    @Override
+    public void log(Level level, String msg, Object... args) {
+        switch (level) {
+            case TRACE:
+                trace(msg, args);
+                break;
+            case DEBUG:
+                debug(msg, args);
+                break;
+            case INFO:
+                info(msg, args);
+                break;
+            case WARN:
+                internalWarn(msg, args);
+                break;
+            case ERROR:
+                internalError(msg, args);
+                break;
+            default:
+        }
+    }
+
+    @Override
+    public void log(Level level, String msg, Throwable t) {
+        switch (level) {
+            case TRACE:
+                trace(msg, t);
+                break;
+            case DEBUG:
+                debug(msg, t);
+                break;
+            case INFO:
+                info(msg, t);
+                break;
+            case WARN:
+                internalWarn(msg, t);
+                break;
+            case ERROR:
+                internalError(msg, t);
+                break;
+            default:
+        }
+    }
+
+    @Override
+    public void log(String code, Level level) {
+        switch (level) {
+            case TRACE:
+                trace();
+                break;
+            case DEBUG:
+                debug();
+                break;
+            case INFO:
+                info();
+                break;
+            case WARN:
+                warn(code);
+                break;
+            case ERROR:
+                error(code);
+                break;
+            default:
+        }
+    }
+
+    @Override
+    public void log(String code, Level level, String msg, Object... args) {
+        switch (level) {
+            case TRACE:
+                trace(msg, args);
+                break;
+            case DEBUG:
+                debug(msg, args);
+                break;
+            case INFO:
+                info(msg, args);
+                break;
+            case WARN:
+                warn(code, msg, args);
+                break;
+            case ERROR:
+                error(code, msg, args);
+                break;
+            default:
+        }
+    }
+
+    @Override
+    public void log(String code, Level level, String msg, Throwable t) {
+        switch (level) {
+            case TRACE:
+                trace(msg, t);
+                break;
+            case DEBUG:
+                debug(msg, t);
+                break;
+            case INFO:
+                info(msg, t);
+                break;
+            case WARN:
+                warn(code, msg, t);
+                break;
+            case ERROR:
+                error(code, msg, t);
+                break;
+            default:
+        }
+    }
+
+    @Override
+    public boolean isTraceEnabled() {
+        return delegate.isTraceEnabled();
+    }
+
+    @Override
+    public boolean isDebugEnabled() {
+        return delegate.isDebugEnabled();
+    }
+
+    @Override
+    public boolean isInfoEnabled() {
+        return delegate.isInfoEnabled();
+    }
+
+    @Override
+    public boolean isWarnEnabled() {
+        return delegate.isWarnEnabled();
+    }
+
+    @Override
+    public boolean isErrorEnabled() {
+        return delegate.isErrorEnabled();
+    }
+
+    private FluentLoggerImpl getLogger() {
+        return this == root ? new FluentLoggerImpl(this) : this;
+    }
+
+    private void warnMessageMissing() {
+        delegate.warn(INTERNAL_ERROR, cause, extendedInformation, "Message 
must not be empty");
+    }
+
+    private static Object[] formatArgs(Object[] args) {
+        for (int i = 0; i < args.length; i++) {
+            if (args[i] instanceof Supplier) {
+                args[i] = ((Supplier<?>) args[i]).get();
+            }
+        }
+        return args;
+    }
+}
diff --git 
a/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/h12/AbstractServerTransportListener.java
 
b/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/h12/AbstractServerTransportListener.java
index ac4f59e61a..16e52d990f 100644
--- 
a/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/h12/AbstractServerTransportListener.java
+++ 
b/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/h12/AbstractServerTransportListener.java
@@ -18,8 +18,8 @@ package org.apache.dubbo.rpc.protocol.tri.h12;
 
 import org.apache.dubbo.common.URL;
 import org.apache.dubbo.common.constants.CommonConstants;
-import org.apache.dubbo.common.logger.ErrorTypeAwareLogger;
-import org.apache.dubbo.common.logger.LoggerFactory;
+import org.apache.dubbo.common.constants.LoggerCodeConstants;
+import org.apache.dubbo.common.logger.FluentLogger;
 import org.apache.dubbo.common.utils.MethodUtils;
 import org.apache.dubbo.remoting.http12.ExceptionHandler;
 import org.apache.dubbo.remoting.http12.HttpChannel;
@@ -37,6 +37,7 @@ import org.apache.dubbo.rpc.model.MethodDescriptor;
 import org.apache.dubbo.rpc.protocol.tri.DescriptorUtils;
 import org.apache.dubbo.rpc.protocol.tri.ExceptionUtils;
 import org.apache.dubbo.rpc.protocol.tri.RpcInvocationBuildContext;
+import org.apache.dubbo.rpc.protocol.tri.TripleConstant;
 import org.apache.dubbo.rpc.protocol.tri.TripleHeaderEnum;
 import org.apache.dubbo.rpc.protocol.tri.TripleProtocol;
 import org.apache.dubbo.rpc.protocol.tri.h12.http2.CompositeExceptionHandler;
@@ -49,16 +50,10 @@ import java.util.List;
 import java.util.concurrent.Executor;
 import java.util.function.Supplier;
 
-import static 
org.apache.dubbo.common.constants.LoggerCodeConstants.COMMON_ERROR_USE_THREAD_POOL;
-import static 
org.apache.dubbo.common.constants.LoggerCodeConstants.INTERNAL_ERROR;
-import static 
org.apache.dubbo.common.constants.LoggerCodeConstants.PROTOCOL_FAILED_PARSE;
-import static 
org.apache.dubbo.rpc.protocol.tri.TripleConstant.REMOTE_ADDRESS_KEY;
-
 public abstract class AbstractServerTransportListener<HEADER extends 
RequestMetadata, MESSAGE extends HttpInputMessage>
         implements HttpTransportListener<HEADER, MESSAGE> {
 
-    private static final ErrorTypeAwareLogger LOGGER =
-            
LoggerFactory.getErrorTypeAwareLogger(AbstractServerTransportListener.class);
+    private static final FluentLogger LOGGER = 
FluentLogger.of(AbstractServerTransportListener.class);
 
     private final FrameworkModel frameworkModel;
     private final URL url;
@@ -88,12 +83,12 @@ public abstract class 
AbstractServerTransportListener<HEADER extends RequestMeta
         try {
             executor = initializeExecutor(metadata);
         } catch (Throwable throwable) {
-            LOGGER.error(COMMON_ERROR_USE_THREAD_POOL, "", "", "initialize 
executor fail.", throwable);
+            LOGGER.error(LoggerCodeConstants.COMMON_ERROR_USE_THREAD_POOL, 
"Initialize executor fail.", throwable);
             onError(throwable);
             return;
         }
         if (executor == null) {
-            LOGGER.error(INTERNAL_ERROR, "", "", "executor must be not null.");
+            LOGGER.error(LoggerCodeConstants.INTERNAL_ERROR, "Executor must be 
not null.");
             onError(new NullPointerException("initializeExecutor return 
null"));
             return;
         }
@@ -198,34 +193,7 @@ public abstract class 
AbstractServerTransportListener<HEADER extends RequestMeta
             }
             return sb.toString();
         };
-        switch (exceptionHandler.resolveLogLevel(t)) {
-            case TRACE:
-                if (LOGGER.isTraceEnabled()) {
-                    LOGGER.trace(msg.get(), t);
-                }
-                return;
-            case DEBUG:
-                if (LOGGER.isDebugEnabled()) {
-                    LOGGER.debug(msg.get(), t);
-                }
-                return;
-            case INFO:
-                if (LOGGER.isInfoEnabled()) {
-                    LOGGER.info(msg.get(), t);
-                }
-                return;
-            case WARN:
-                if (LOGGER.isWarnEnabled()) {
-                    LOGGER.warn(INTERNAL_ERROR, "", "", msg.get(), t);
-                }
-                return;
-            case ERROR:
-                if (LOGGER.isErrorEnabled()) {
-                    LOGGER.error(INTERNAL_ERROR, "", "", msg.get(), t);
-                }
-                return;
-            default:
-        }
+        LOGGER.msg(msg).log(exceptionHandler.resolveLogLevel(t), t);
     }
 
     protected void onError(Throwable throwable) {
@@ -282,7 +250,7 @@ public abstract class 
AbstractServerTransportListener<HEADER extends RequestMeta
         inv.setTargetServiceUniqueName(url.getServiceKey());
         inv.setReturnTypes(methodDescriptor.getReturnTypes());
         
inv.setObjectAttachments(StreamUtils.toAttachments(httpMetadata.headers()));
-        inv.put(REMOTE_ADDRESS_KEY, httpChannel.remoteAddress());
+        inv.put(TripleConstant.REMOTE_ADDRESS_KEY, 
httpChannel.remoteAddress());
         inv.getAttributes().putAll(context.getAttributes());
         String consumerAppName = 
httpMetadata.headers().getFirst(TripleHeaderEnum.CONSUMER_APP_NAME_KEY.getHeader());
         if (null != consumerAppName) {
@@ -310,12 +278,11 @@ public abstract class 
AbstractServerTransportListener<HEADER extends RequestMeta
             }
         } catch (Throwable t) {
             LOGGER.warn(
-                    PROTOCOL_FAILED_PARSE,
-                    "",
-                    "",
-                    String.format(
-                            "Failed to parse request timeout set from:%s, 
service=%s " + "method=%s",
-                            timeoutString, 
context.getServiceDescriptor().getInterfaceName(), context.getMethodName()));
+                    LoggerCodeConstants.PROTOCOL_FAILED_PARSE,
+                    "Failed to parse request timeout set from: {}, service={}, 
method={}",
+                    timeoutString,
+                    context.getServiceDescriptor().getInterfaceName(),
+                    context.getMethodName());
         }
         return invocation;
     }
diff --git 
a/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/rest/filter/DefaultFilterChain.java
 
b/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/rest/filter/DefaultFilterChain.java
index f4ddd2ad26..30cf418442 100644
--- 
a/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/rest/filter/DefaultFilterChain.java
+++ 
b/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/rest/filter/DefaultFilterChain.java
@@ -16,9 +16,7 @@
  */
 package org.apache.dubbo.rpc.protocol.tri.rest.filter;
 
-import org.apache.dubbo.common.constants.LoggerCodeConstants;
-import org.apache.dubbo.common.logger.ErrorTypeAwareLogger;
-import org.apache.dubbo.common.logger.LoggerFactory;
+import org.apache.dubbo.common.logger.FluentLogger;
 import org.apache.dubbo.remoting.http12.HttpRequest;
 import org.apache.dubbo.remoting.http12.HttpResponse;
 import org.apache.dubbo.rpc.AppResponse;
@@ -33,7 +31,7 @@ import java.util.function.Supplier;
 
 final class DefaultFilterChain implements FilterChain, Listener {
 
-    private static final ErrorTypeAwareLogger LOGGER = 
LoggerFactory.getErrorTypeAwareLogger(DefaultFilterChain.class);
+    private static final FluentLogger LOGGER = 
FluentLogger.of(DefaultFilterChain.class);
 
     private final RestFilter[] filters;
     private final Invocation invocation;
@@ -106,11 +104,7 @@ final class DefaultFilterChain implements FilterChain, 
Listener {
                 try {
                     ((Listener) filter).onResponse(result, request, response);
                 } catch (Throwable t) {
-                    LOGGER.error(
-                            LoggerCodeConstants.COMMON_UNEXPECTED_EXCEPTION,
-                            "",
-                            "",
-                            "Call onResponse for filter " + "[" + filter + "] 
error");
+                    LOGGER.internalError("Call onResponse for filter [{}] 
error", filter);
                 }
             }
         }
@@ -124,11 +118,7 @@ final class DefaultFilterChain implements FilterChain, 
Listener {
                 try {
                     ((Listener) filter).onError(t, request, response);
                 } catch (Throwable th) {
-                    LOGGER.error(
-                            LoggerCodeConstants.COMMON_UNEXPECTED_EXCEPTION,
-                            "",
-                            "",
-                            "Call onError for filter " + "[" + filter + "] 
error");
+                    LOGGER.internalError("Call onError for filter [{}] error", 
filter);
                 }
             }
         }
diff --git 
a/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/rest/mapping/DefaultRequestMappingRegistry.java
 
b/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/rest/mapping/DefaultRequestMappingRegistry.java
index 3168e23c5a..eb7eb2e49c 100644
--- 
a/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/rest/mapping/DefaultRequestMappingRegistry.java
+++ 
b/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/rest/mapping/DefaultRequestMappingRegistry.java
@@ -19,8 +19,7 @@ package org.apache.dubbo.rpc.protocol.tri.rest.mapping;
 import org.apache.dubbo.common.URL;
 import org.apache.dubbo.common.config.Configuration;
 import org.apache.dubbo.common.config.ConfigurationUtils;
-import org.apache.dubbo.common.constants.LoggerCodeConstants;
-import org.apache.dubbo.common.logger.ErrorTypeAwareLogger;
+import org.apache.dubbo.common.logger.FluentLogger;
 import org.apache.dubbo.common.utils.ClassUtils;
 import org.apache.dubbo.config.nested.RestConfig;
 import org.apache.dubbo.remoting.http12.HttpRequest;
@@ -54,12 +53,9 @@ import java.util.concurrent.atomic.AtomicInteger;
 import java.util.concurrent.locks.ReadWriteLock;
 import java.util.concurrent.locks.ReentrantReadWriteLock;
 
-import static 
org.apache.dubbo.common.logger.LoggerFactory.getErrorTypeAwareLogger;
-import static 
org.apache.dubbo.rpc.protocol.tri.rest.Messages.AMBIGUOUS_MAPPING;
-
 public final class DefaultRequestMappingRegistry implements 
RequestMappingRegistry {
 
-    private static final ErrorTypeAwareLogger LOGGER = 
getErrorTypeAwareLogger(DefaultRequestMappingRegistry.class);
+    private static final FluentLogger LOGGER = 
FluentLogger.of(DefaultRequestMappingRegistry.class);
 
     private final FrameworkModel frameworkModel;
     private final ContentNegotiator contentNegotiator;
@@ -173,8 +169,7 @@ public final class DefaultRequestMappingRegistry implements 
RequestMappingRegist
                     }
                     counter.incrementAndGet();
                 } else if (LOGGER.isWarnEnabled()) {
-                    String msg = Messages.DUPLICATE_MAPPING.format(path, 
mapping, handler.getMethod(), exists);
-                    LOGGER.warn(LoggerCodeConstants.INTERNAL_ERROR, "", "", 
msg);
+                    
LOGGER.internalWarn(Messages.DUPLICATE_MAPPING.format(path, mapping, 
handler.getMethod(), exists));
                 }
             }
         } finally {
@@ -274,7 +269,7 @@ public final class DefaultRequestMappingRegistry implements 
RequestMappingRegist
             Candidate first = candidates.get(0);
             Candidate second = candidates.get(1);
             if (first.mapping.compareTo(second.mapping, request) == 0) {
-                throw new RestMappingException(AMBIGUOUS_MAPPING, path, first, 
second);
+                throw new RestMappingException(Messages.AMBIGUOUS_MAPPING, 
path, first, second);
             }
         }
 


Reply via email to