This is an automated email from the ASF dual-hosted git repository.
zrlw 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 71f760015e [3.3] Set FQCN for FluentLoggerImpl (#15448)
71f760015e is described below
commit 71f760015e458cc4a572011360306a0d27cf2e2d
Author: zrlw <[email protected]>
AuthorDate: Thu Jun 12 21:51:34 2025 +0800
[3.3] Set FQCN for FluentLoggerImpl (#15448)
* Set FQCN for FluentLoggerImpl
* Add customized FQCN for Log4j2Logger
* Force change Log4j2Logger logger type to ExtendedLogger
* Revert JclLogger and JdkLogger
* Use FQCN as the ingredient of error type aware logger map key
* Optimize LoggerAdapter interfaces
* Get error type aware logger by classname when the parameter key is clazz
---
.../dubbo/common/logger/FluentLoggerImpl.java | 4 +-
.../apache/dubbo/common/logger/LoggerAdapter.java | 22 +++++++
.../apache/dubbo/common/logger/LoggerFactory.java | 39 +++++++++++--
.../dubbo/common/logger/log4j/Log4jLogger.java | 48 ++++++++-------
.../common/logger/log4j/Log4jLoggerAdapter.java | 10 ++++
.../dubbo/common/logger/log4j2/Log4j2Logger.java | 55 ++++++++++-------
.../common/logger/log4j2/Log4j2LoggerAdapter.java | 15 ++++-
.../dubbo/common/logger/slf4j/Slf4jLogger.java | 68 +++++++++++++---------
.../common/logger/slf4j/Slf4jLoggerAdapter.java | 10 ++++
.../org/apache/dubbo/common/logger/LoggerTest.java | 5 +-
10 files changed, 197 insertions(+), 79 deletions(-)
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
index 3184493b8b..f7e85cf998 100644
---
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
@@ -36,12 +36,12 @@ final class FluentLoggerImpl implements FluentLogger {
private Object[] args;
FluentLoggerImpl(Class<?> key) {
- delegate = LoggerFactory.getErrorTypeAwareLogger(key);
+ delegate =
LoggerFactory.getErrorTypeAwareLogger(FluentLoggerImpl.class.getName(), key);
root = this;
}
FluentLoggerImpl(String key) {
- delegate = LoggerFactory.getErrorTypeAwareLogger(key);
+ delegate =
LoggerFactory.getErrorTypeAwareLogger(FluentLoggerImpl.class.getName(), key);
root = this;
}
diff --git
a/dubbo-common/src/main/java/org/apache/dubbo/common/logger/LoggerAdapter.java
b/dubbo-common/src/main/java/org/apache/dubbo/common/logger/LoggerAdapter.java
index 6c668592d3..7a5a2f8705 100644
---
a/dubbo-common/src/main/java/org/apache/dubbo/common/logger/LoggerAdapter.java
+++
b/dubbo-common/src/main/java/org/apache/dubbo/common/logger/LoggerAdapter.java
@@ -43,6 +43,28 @@ public interface LoggerAdapter {
*/
Logger getLogger(String key);
+ /**
+ * Get a logger
+ *
+ * @param fqcn the full qualified class name of caller
+ * @param key the returned logger will be named after clazz
+ * @return logger
+ */
+ default Logger getLogger(String fqcn, Class<?> key) {
+ return getLogger(key);
+ }
+
+ /**
+ * Get a logger
+ *
+ * @param fqcn the full qualified class name of caller
+ * @param key the returned logger will be named after key
+ * @return logger
+ */
+ default Logger getLogger(String fqcn, String key) {
+ return getLogger(key);
+ }
+
/**
* Get the current logging level
*
diff --git
a/dubbo-common/src/main/java/org/apache/dubbo/common/logger/LoggerFactory.java
b/dubbo-common/src/main/java/org/apache/dubbo/common/logger/LoggerFactory.java
index 00eaebe64c..6930b7172b 100644
---
a/dubbo-common/src/main/java/org/apache/dubbo/common/logger/LoggerFactory.java
+++
b/dubbo-common/src/main/java/org/apache/dubbo/common/logger/LoggerFactory.java
@@ -25,6 +25,7 @@ import
org.apache.dubbo.common.logger.slf4j.Slf4jLoggerAdapter;
import org.apache.dubbo.common.logger.support.FailsafeErrorTypeAwareLogger;
import org.apache.dubbo.common.logger.support.FailsafeLogger;
import org.apache.dubbo.common.utils.ConcurrentHashMapUtils;
+import org.apache.dubbo.common.utils.Pair;
import org.apache.dubbo.common.utils.SystemPropertyConfigUtils;
import org.apache.dubbo.rpc.model.FrameworkModel;
@@ -43,7 +44,7 @@ import java.util.concurrent.ConcurrentMap;
public class LoggerFactory {
private static final ConcurrentMap<String, FailsafeLogger> LOGGERS = new
ConcurrentHashMap<>();
- private static final ConcurrentMap<String, FailsafeErrorTypeAwareLogger>
ERROR_TYPE_AWARE_LOGGERS =
+ private static final ConcurrentMap<Object, FailsafeErrorTypeAwareLogger>
ERROR_TYPE_AWARE_LOGGERS =
new ConcurrentHashMap<>();
private static volatile LoggerAdapter loggerAdapter;
@@ -176,10 +177,9 @@ public class LoggerFactory {
* @return error type aware logger
*/
public static ErrorTypeAwareLogger getErrorTypeAwareLogger(Class<?> key) {
+ final String name = key.getName();
return ConcurrentHashMapUtils.computeIfAbsent(
- ERROR_TYPE_AWARE_LOGGERS,
- key.getName(),
- name -> new
FailsafeErrorTypeAwareLogger(loggerAdapter.getLogger(name)));
+ ERROR_TYPE_AWARE_LOGGERS, name, k -> new
FailsafeErrorTypeAwareLogger(loggerAdapter.getLogger(name)));
}
/**
@@ -190,7 +190,36 @@ public class LoggerFactory {
*/
public static ErrorTypeAwareLogger getErrorTypeAwareLogger(String key) {
return ConcurrentHashMapUtils.computeIfAbsent(
- ERROR_TYPE_AWARE_LOGGERS, key, k -> new
FailsafeErrorTypeAwareLogger(loggerAdapter.getLogger(k)));
+ ERROR_TYPE_AWARE_LOGGERS, key, k -> new
FailsafeErrorTypeAwareLogger(loggerAdapter.getLogger(key)));
+ }
+
+ /**
+ * Get error type aware logger by FQCN and Class object.
+ *
+ * @param fqcn the full qualified class name of caller
+ * @param key the returned logger will be named after clazz
+ * @return error type aware logger
+ */
+ public static ErrorTypeAwareLogger getErrorTypeAwareLogger(String fqcn,
Class<?> key) {
+ final String name = key.getName();
+ return ConcurrentHashMapUtils.computeIfAbsent(
+ ERROR_TYPE_AWARE_LOGGERS,
+ Pair.of(name, fqcn),
+ p -> new
FailsafeErrorTypeAwareLogger(loggerAdapter.getLogger(fqcn, name)));
+ }
+
+ /**
+ * Get error type aware logger by FQCN and a String key.
+ *
+ * @param fqcn the full qualified class name of caller
+ * @param key the returned logger will be named after key
+ * @return error type aware logger
+ */
+ public static ErrorTypeAwareLogger getErrorTypeAwareLogger(String fqcn,
String key) {
+ return ConcurrentHashMapUtils.computeIfAbsent(
+ ERROR_TYPE_AWARE_LOGGERS,
+ Pair.of(key, fqcn),
+ p -> new
FailsafeErrorTypeAwareLogger(loggerAdapter.getLogger(fqcn, key)));
}
/**
diff --git
a/dubbo-common/src/main/java/org/apache/dubbo/common/logger/log4j/Log4jLogger.java
b/dubbo-common/src/main/java/org/apache/dubbo/common/logger/log4j/Log4jLogger.java
index 9c1073aa9c..b262f966d0 100644
---
a/dubbo-common/src/main/java/org/apache/dubbo/common/logger/log4j/Log4jLogger.java
+++
b/dubbo-common/src/main/java/org/apache/dubbo/common/logger/log4j/Log4jLogger.java
@@ -25,117 +25,123 @@ import org.slf4j.helpers.MessageFormatter;
public class Log4jLogger implements Logger {
- private static final String FQCN = FailsafeLogger.class.getName();
+ private final String fqcn;
private final org.apache.log4j.Logger logger;
public Log4jLogger(org.apache.log4j.Logger logger) {
+ this.fqcn = FailsafeLogger.class.getName();
+ this.logger = logger;
+ }
+
+ public Log4jLogger(String fqcn, org.apache.log4j.Logger logger) {
+ this.fqcn = fqcn;
this.logger = logger;
}
@Override
public void trace(String msg) {
- logger.log(FQCN, Level.TRACE, msg, null);
+ logger.log(fqcn, Level.TRACE, msg, null);
}
@Override
public void trace(String msg, Object... arguments) {
FormattingTuple ft = MessageFormatter.arrayFormat(msg, arguments);
- logger.log(FQCN, Level.TRACE, ft.getMessage(), ft.getThrowable());
+ logger.log(fqcn, Level.TRACE, ft.getMessage(), ft.getThrowable());
}
@Override
public void trace(Throwable e) {
- logger.log(FQCN, Level.TRACE, e == null ? null : e.getMessage(), e);
+ logger.log(fqcn, Level.TRACE, e == null ? null : e.getMessage(), e);
}
@Override
public void trace(String msg, Throwable e) {
- logger.log(FQCN, Level.TRACE, msg, e);
+ logger.log(fqcn, Level.TRACE, msg, e);
}
@Override
public void debug(String msg) {
- logger.log(FQCN, Level.DEBUG, msg, null);
+ logger.log(fqcn, Level.DEBUG, msg, null);
}
@Override
public void debug(String msg, Object... arguments) {
FormattingTuple ft = MessageFormatter.arrayFormat(msg, arguments);
- logger.log(FQCN, Level.DEBUG, ft.getMessage(), ft.getThrowable());
+ logger.log(fqcn, Level.DEBUG, ft.getMessage(), ft.getThrowable());
}
@Override
public void debug(Throwable e) {
- logger.log(FQCN, Level.DEBUG, e == null ? null : e.getMessage(), e);
+ logger.log(fqcn, Level.DEBUG, e == null ? null : e.getMessage(), e);
}
@Override
public void debug(String msg, Throwable e) {
- logger.log(FQCN, Level.DEBUG, msg, e);
+ logger.log(fqcn, Level.DEBUG, msg, e);
}
@Override
public void info(String msg) {
- logger.log(FQCN, Level.INFO, msg, null);
+ logger.log(fqcn, Level.INFO, msg, null);
}
@Override
public void info(String msg, Object... arguments) {
FormattingTuple ft = MessageFormatter.arrayFormat(msg, arguments);
- logger.log(FQCN, Level.INFO, ft.getMessage(), ft.getThrowable());
+ logger.log(fqcn, Level.INFO, ft.getMessage(), ft.getThrowable());
}
@Override
public void info(Throwable e) {
- logger.log(FQCN, Level.INFO, e == null ? null : e.getMessage(), e);
+ logger.log(fqcn, Level.INFO, e == null ? null : e.getMessage(), e);
}
@Override
public void info(String msg, Throwable e) {
- logger.log(FQCN, Level.INFO, msg, e);
+ logger.log(fqcn, Level.INFO, msg, e);
}
@Override
public void warn(String msg) {
- logger.log(FQCN, Level.WARN, msg, null);
+ logger.log(fqcn, Level.WARN, msg, null);
}
@Override
public void warn(String msg, Object... arguments) {
FormattingTuple ft = MessageFormatter.arrayFormat(msg, arguments);
- logger.log(FQCN, Level.WARN, ft.getMessage(), ft.getThrowable());
+ logger.log(fqcn, Level.WARN, ft.getMessage(), ft.getThrowable());
}
@Override
public void warn(Throwable e) {
- logger.log(FQCN, Level.WARN, e == null ? null : e.getMessage(), e);
+ logger.log(fqcn, Level.WARN, e == null ? null : e.getMessage(), e);
}
@Override
public void warn(String msg, Throwable e) {
- logger.log(FQCN, Level.WARN, msg, e);
+ logger.log(fqcn, Level.WARN, msg, e);
}
@Override
public void error(String msg) {
- logger.log(FQCN, Level.ERROR, msg, null);
+ logger.log(fqcn, Level.ERROR, msg, null);
}
@Override
public void error(String msg, Object... arguments) {
FormattingTuple ft = MessageFormatter.arrayFormat(msg, arguments);
- logger.log(FQCN, Level.ERROR, ft.getMessage(), ft.getThrowable());
+ logger.log(fqcn, Level.ERROR, ft.getMessage(), ft.getThrowable());
}
@Override
public void error(Throwable e) {
- logger.log(FQCN, Level.ERROR, e == null ? null : e.getMessage(), e);
+ logger.log(fqcn, Level.ERROR, e == null ? null : e.getMessage(), e);
}
@Override
public void error(String msg, Throwable e) {
- logger.log(FQCN, Level.ERROR, msg, e);
+ logger.log(fqcn, Level.ERROR, msg, e);
}
@Override
diff --git
a/dubbo-common/src/main/java/org/apache/dubbo/common/logger/log4j/Log4jLoggerAdapter.java
b/dubbo-common/src/main/java/org/apache/dubbo/common/logger/log4j/Log4jLoggerAdapter.java
index 1fdc8ac1bc..10b603259b 100644
---
a/dubbo-common/src/main/java/org/apache/dubbo/common/logger/log4j/Log4jLoggerAdapter.java
+++
b/dubbo-common/src/main/java/org/apache/dubbo/common/logger/log4j/Log4jLoggerAdapter.java
@@ -111,6 +111,16 @@ public class Log4jLoggerAdapter implements LoggerAdapter {
return new Log4jLogger(LogManager.getLogger(key));
}
+ @Override
+ public Logger getLogger(String fqcn, Class<?> key) {
+ return new Log4jLogger(fqcn, LogManager.getLogger(key));
+ }
+
+ @Override
+ public Logger getLogger(String fqcn, String key) {
+ return new Log4jLogger(fqcn, LogManager.getLogger(key));
+ }
+
@Override
public Level getLevel() {
return fromLog4jLevel(LogManager.getRootLogger().getLevel());
diff --git
a/dubbo-common/src/main/java/org/apache/dubbo/common/logger/log4j2/Log4j2Logger.java
b/dubbo-common/src/main/java/org/apache/dubbo/common/logger/log4j2/Log4j2Logger.java
index 8701b181fe..a7c9d6ca39 100644
---
a/dubbo-common/src/main/java/org/apache/dubbo/common/logger/log4j2/Log4j2Logger.java
+++
b/dubbo-common/src/main/java/org/apache/dubbo/common/logger/log4j2/Log4j2Logger.java
@@ -17,113 +17,124 @@
package org.apache.dubbo.common.logger.log4j2;
import org.apache.dubbo.common.logger.Logger;
+import org.apache.dubbo.common.logger.support.FailsafeLogger;
+
+import org.apache.logging.log4j.Level;
public class Log4j2Logger implements Logger {
- private final org.apache.logging.log4j.Logger logger;
+ private final String fqcn;
+
+ private final org.apache.logging.log4j.spi.ExtendedLogger logger;
+
+ public Log4j2Logger(org.apache.logging.log4j.spi.ExtendedLogger logger) {
+ this.fqcn = FailsafeLogger.class.getName();
+ this.logger = logger;
+ }
- public Log4j2Logger(org.apache.logging.log4j.Logger logger) {
+ public Log4j2Logger(String fqcn,
org.apache.logging.log4j.spi.ExtendedLogger logger) {
+ this.fqcn = fqcn;
this.logger = logger;
}
@Override
public void trace(String msg) {
- logger.trace(msg);
+ logger.logIfEnabled(fqcn, Level.TRACE, null, msg);
}
@Override
public void trace(String msg, Object... arguments) {
- logger.trace(msg, arguments);
+ logger.logIfEnabled(fqcn, Level.TRACE, null, msg, arguments);
}
@Override
public void trace(Throwable e) {
- logger.trace(e == null ? null : e.getMessage(), e);
+ logger.logIfEnabled(fqcn, Level.TRACE, null, e == null ? null :
e.getMessage(), e);
}
@Override
public void trace(String msg, Throwable e) {
- logger.trace(msg, e);
+ logger.logIfEnabled(fqcn, Level.TRACE, null, msg, e);
}
@Override
public void debug(String msg) {
- logger.debug(msg);
+ logger.logIfEnabled(fqcn, Level.DEBUG, null, msg);
}
@Override
public void debug(String msg, Object... arguments) {
- logger.debug(msg, arguments);
+ logger.logIfEnabled(fqcn, Level.DEBUG, null, msg, arguments);
}
@Override
public void debug(Throwable e) {
- logger.debug(e == null ? null : e.getMessage(), e);
+ logger.logIfEnabled(fqcn, Level.DEBUG, null, e == null ? null :
e.getMessage(), e);
}
@Override
public void debug(String msg, Throwable e) {
- logger.debug(msg, e);
+ logger.logIfEnabled(fqcn, Level.DEBUG, null, msg, e);
}
@Override
public void info(String msg) {
- logger.info(msg);
+ logger.logIfEnabled(fqcn, Level.INFO, null, msg);
}
@Override
public void info(String msg, Object... arguments) {
- logger.info(msg, arguments);
+ logger.logIfEnabled(fqcn, Level.INFO, null, msg, arguments);
}
@Override
public void info(Throwable e) {
- logger.info(e == null ? null : e.getMessage(), e);
+ logger.logIfEnabled(fqcn, Level.INFO, null, e == null ? null :
e.getMessage(), e);
}
@Override
public void info(String msg, Throwable e) {
- logger.info(msg, e);
+ logger.logIfEnabled(fqcn, Level.INFO, null, msg, e);
}
@Override
public void warn(String msg) {
- logger.warn(msg);
+ logger.logIfEnabled(fqcn, Level.WARN, null, msg);
}
@Override
public void warn(String msg, Object... arguments) {
- logger.warn(msg, arguments);
+ logger.logIfEnabled(fqcn, Level.WARN, null, msg, arguments);
}
@Override
public void warn(Throwable e) {
- logger.warn(e == null ? null : e.getMessage(), e);
+ logger.logIfEnabled(fqcn, Level.WARN, null, e == null ? null :
e.getMessage(), e);
}
@Override
public void warn(String msg, Throwable e) {
- logger.warn(msg, e);
+ logger.logIfEnabled(fqcn, Level.WARN, null, msg, e);
}
@Override
public void error(String msg) {
- logger.error(msg);
+ logger.logIfEnabled(fqcn, Level.ERROR, null, msg);
}
@Override
public void error(String msg, Object... arguments) {
- logger.error(msg, arguments);
+ logger.logIfEnabled(fqcn, Level.ERROR, null, msg, arguments);
}
@Override
public void error(Throwable e) {
- logger.error(e == null ? null : e.getMessage(), e);
+ logger.logIfEnabled(fqcn, Level.ERROR, null, e == null ? null :
e.getMessage(), e);
}
@Override
public void error(String msg, Throwable e) {
- logger.error(msg, e);
+ logger.logIfEnabled(fqcn, Level.ERROR, null, msg, e);
}
@Override
diff --git
a/dubbo-common/src/main/java/org/apache/dubbo/common/logger/log4j2/Log4j2LoggerAdapter.java
b/dubbo-common/src/main/java/org/apache/dubbo/common/logger/log4j2/Log4j2LoggerAdapter.java
index f30bbcb9fe..724ae35b37 100644
---
a/dubbo-common/src/main/java/org/apache/dubbo/common/logger/log4j2/Log4j2LoggerAdapter.java
+++
b/dubbo-common/src/main/java/org/apache/dubbo/common/logger/log4j2/Log4j2LoggerAdapter.java
@@ -24,6 +24,7 @@ import java.io.File;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.core.config.Configurator;
+import org.apache.logging.log4j.spi.ExtendedLogger;
public class Log4j2LoggerAdapter implements LoggerAdapter {
public static final String NAME = "log4j2";
@@ -85,12 +86,22 @@ public class Log4j2LoggerAdapter implements LoggerAdapter {
@Override
public Logger getLogger(Class<?> key) {
- return new Log4j2Logger(LogManager.getLogger(key));
+ return new Log4j2Logger((ExtendedLogger) LogManager.getLogger(key));
}
@Override
public Logger getLogger(String key) {
- return new Log4j2Logger(LogManager.getLogger(key));
+ return new Log4j2Logger((ExtendedLogger) LogManager.getLogger(key));
+ }
+
+ @Override
+ public Logger getLogger(String fqcn, Class<?> key) {
+ return new Log4j2Logger(fqcn, (ExtendedLogger)
LogManager.getLogger(key));
+ }
+
+ @Override
+ public Logger getLogger(String fqcn, String key) {
+ return new Log4j2Logger(fqcn, (ExtendedLogger)
LogManager.getLogger(key));
}
@Override
diff --git
a/dubbo-common/src/main/java/org/apache/dubbo/common/logger/slf4j/Slf4jLogger.java
b/dubbo-common/src/main/java/org/apache/dubbo/common/logger/slf4j/Slf4jLogger.java
index 333fc645aa..8bb7ff3b7b 100644
---
a/dubbo-common/src/main/java/org/apache/dubbo/common/logger/slf4j/Slf4jLogger.java
+++
b/dubbo-common/src/main/java/org/apache/dubbo/common/logger/slf4j/Slf4jLogger.java
@@ -26,7 +26,7 @@ import org.slf4j.spi.LocationAwareLogger;
public class Slf4jLogger implements Logger {
- private static final String FQCN = FailsafeLogger.class.getName();
+ private final String fqcn;
private final org.slf4j.Logger logger;
@@ -38,13 +38,24 @@ public class Slf4jLogger implements Logger {
} else {
locationAwareLogger = null;
}
+ this.fqcn = FailsafeLogger.class.getName();
+ this.logger = logger;
+ }
+
+ public Slf4jLogger(String fqcn, org.slf4j.Logger logger) {
+ if (logger instanceof LocationAwareLogger) {
+ locationAwareLogger = (LocationAwareLogger) logger;
+ } else {
+ locationAwareLogger = null;
+ }
+ this.fqcn = fqcn;
this.logger = logger;
}
@Override
public void trace(String msg) {
if (locationAwareLogger != null) {
- locationAwareLogger.log(null, FQCN, LocationAwareLogger.TRACE_INT,
msg, null, null);
+ locationAwareLogger.log(null, fqcn, LocationAwareLogger.TRACE_INT,
msg, null, null);
return;
}
logger.trace(msg);
@@ -55,7 +66,7 @@ public class Slf4jLogger implements Logger {
if (locationAwareLogger != null &&
locationAwareLogger.isTraceEnabled()) {
FormattingTuple ft = MessageFormatter.arrayFormat(msg, arguments);
locationAwareLogger.log(
- null, FQCN, LocationAwareLogger.TRACE_INT, msg,
ft.getArgArray(), ft.getThrowable());
+ null, fqcn, LocationAwareLogger.TRACE_INT, msg,
ft.getArgArray(), ft.getThrowable());
return;
}
logger.trace(msg, arguments);
@@ -64,16 +75,17 @@ public class Slf4jLogger implements Logger {
@Override
public void trace(Throwable e) {
if (locationAwareLogger != null) {
- locationAwareLogger.log(null, FQCN, LocationAwareLogger.TRACE_INT,
e.getMessage(), null, e);
+ locationAwareLogger.log(
+ null, fqcn, LocationAwareLogger.TRACE_INT, e == null ?
null : e.getMessage(), null, e);
return;
}
- logger.trace(e.getMessage(), e);
+ logger.trace(e == null ? null : e.getMessage(), e);
}
@Override
public void trace(String msg, Throwable e) {
if (locationAwareLogger != null) {
- locationAwareLogger.log(null, FQCN, LocationAwareLogger.TRACE_INT,
msg, null, e);
+ locationAwareLogger.log(null, fqcn, LocationAwareLogger.TRACE_INT,
msg, null, e);
return;
}
logger.trace(msg, e);
@@ -82,7 +94,7 @@ public class Slf4jLogger implements Logger {
@Override
public void debug(String msg) {
if (locationAwareLogger != null) {
- locationAwareLogger.log(null, FQCN, LocationAwareLogger.DEBUG_INT,
msg, null, null);
+ locationAwareLogger.log(null, fqcn, LocationAwareLogger.DEBUG_INT,
msg, null, null);
return;
}
logger.debug(msg);
@@ -93,7 +105,7 @@ public class Slf4jLogger implements Logger {
if (locationAwareLogger != null &&
locationAwareLogger.isDebugEnabled()) {
FormattingTuple ft = MessageFormatter.arrayFormat(msg, arguments);
locationAwareLogger.log(
- null, FQCN, LocationAwareLogger.DEBUG_INT, msg,
ft.getArgArray(), ft.getThrowable());
+ null, fqcn, LocationAwareLogger.DEBUG_INT, msg,
ft.getArgArray(), ft.getThrowable());
return;
}
logger.debug(msg, arguments);
@@ -102,16 +114,17 @@ public class Slf4jLogger implements Logger {
@Override
public void debug(Throwable e) {
if (locationAwareLogger != null) {
- locationAwareLogger.log(null, FQCN, LocationAwareLogger.DEBUG_INT,
e.getMessage(), null, e);
+ locationAwareLogger.log(
+ null, fqcn, LocationAwareLogger.DEBUG_INT, e == null ?
null : e.getMessage(), null, e);
return;
}
- logger.debug(e.getMessage(), e);
+ logger.debug(e == null ? null : e.getMessage(), e);
}
@Override
public void debug(String msg, Throwable e) {
if (locationAwareLogger != null) {
- locationAwareLogger.log(null, FQCN, LocationAwareLogger.DEBUG_INT,
msg, null, e);
+ locationAwareLogger.log(null, fqcn, LocationAwareLogger.DEBUG_INT,
msg, null, e);
return;
}
logger.debug(msg, e);
@@ -120,7 +133,7 @@ public class Slf4jLogger implements Logger {
@Override
public void info(String msg) {
if (locationAwareLogger != null) {
- locationAwareLogger.log(null, FQCN, LocationAwareLogger.INFO_INT,
msg, null, null);
+ locationAwareLogger.log(null, fqcn, LocationAwareLogger.INFO_INT,
msg, null, null);
return;
}
logger.info(msg);
@@ -130,7 +143,7 @@ public class Slf4jLogger implements Logger {
public void info(String msg, Object... arguments) {
if (locationAwareLogger != null &&
locationAwareLogger.isInfoEnabled()) {
FormattingTuple ft = MessageFormatter.arrayFormat(msg, arguments);
- locationAwareLogger.log(null, FQCN, LocationAwareLogger.INFO_INT,
msg, ft.getArgArray(), ft.getThrowable());
+ locationAwareLogger.log(null, fqcn, LocationAwareLogger.INFO_INT,
msg, ft.getArgArray(), ft.getThrowable());
return;
}
logger.info(msg, arguments);
@@ -139,16 +152,17 @@ public class Slf4jLogger implements Logger {
@Override
public void info(Throwable e) {
if (locationAwareLogger != null) {
- locationAwareLogger.log(null, FQCN, LocationAwareLogger.INFO_INT,
e.getMessage(), null, e);
+ locationAwareLogger.log(
+ null, fqcn, LocationAwareLogger.INFO_INT, e == null ? null
: e.getMessage(), null, e);
return;
}
- logger.info(e.getMessage(), e);
+ logger.info(e == null ? null : e.getMessage(), e);
}
@Override
public void info(String msg, Throwable e) {
if (locationAwareLogger != null) {
- locationAwareLogger.log(null, FQCN, LocationAwareLogger.INFO_INT,
msg, null, e);
+ locationAwareLogger.log(null, fqcn, LocationAwareLogger.INFO_INT,
msg, null, e);
return;
}
logger.info(msg, e);
@@ -157,7 +171,7 @@ public class Slf4jLogger implements Logger {
@Override
public void warn(String msg) {
if (locationAwareLogger != null) {
- locationAwareLogger.log(null, FQCN, LocationAwareLogger.WARN_INT,
msg, null, null);
+ locationAwareLogger.log(null, fqcn, LocationAwareLogger.WARN_INT,
msg, null, null);
return;
}
logger.warn(msg);
@@ -167,7 +181,7 @@ public class Slf4jLogger implements Logger {
public void warn(String msg, Object... arguments) {
if (locationAwareLogger != null &&
locationAwareLogger.isWarnEnabled()) {
FormattingTuple ft = MessageFormatter.arrayFormat(msg, arguments);
- locationAwareLogger.log(null, FQCN, LocationAwareLogger.WARN_INT,
msg, ft.getArgArray(), ft.getThrowable());
+ locationAwareLogger.log(null, fqcn, LocationAwareLogger.WARN_INT,
msg, ft.getArgArray(), ft.getThrowable());
return;
}
logger.warn(msg, arguments);
@@ -176,16 +190,17 @@ public class Slf4jLogger implements Logger {
@Override
public void warn(Throwable e) {
if (locationAwareLogger != null) {
- locationAwareLogger.log(null, FQCN, LocationAwareLogger.WARN_INT,
e.getMessage(), null, e);
+ locationAwareLogger.log(
+ null, fqcn, LocationAwareLogger.WARN_INT, e == null ? null
: e.getMessage(), null, e);
return;
}
- logger.warn(e.getMessage(), e);
+ logger.warn(e == null ? null : e.getMessage(), e);
}
@Override
public void warn(String msg, Throwable e) {
if (locationAwareLogger != null) {
- locationAwareLogger.log(null, FQCN, LocationAwareLogger.WARN_INT,
msg, null, e);
+ locationAwareLogger.log(null, fqcn, LocationAwareLogger.WARN_INT,
msg, null, e);
return;
}
logger.warn(msg, e);
@@ -194,7 +209,7 @@ public class Slf4jLogger implements Logger {
@Override
public void error(String msg) {
if (locationAwareLogger != null) {
- locationAwareLogger.log(null, FQCN, LocationAwareLogger.ERROR_INT,
msg, null, null);
+ locationAwareLogger.log(null, fqcn, LocationAwareLogger.ERROR_INT,
msg, null, null);
return;
}
logger.error(msg);
@@ -205,7 +220,7 @@ public class Slf4jLogger implements Logger {
if (locationAwareLogger != null &&
locationAwareLogger.isErrorEnabled()) {
FormattingTuple ft = MessageFormatter.arrayFormat(msg, arguments);
locationAwareLogger.log(
- null, FQCN, LocationAwareLogger.ERROR_INT, msg,
ft.getArgArray(), ft.getThrowable());
+ null, fqcn, LocationAwareLogger.ERROR_INT, msg,
ft.getArgArray(), ft.getThrowable());
return;
}
logger.error(msg, arguments);
@@ -214,16 +229,17 @@ public class Slf4jLogger implements Logger {
@Override
public void error(Throwable e) {
if (locationAwareLogger != null) {
- locationAwareLogger.log(null, FQCN, LocationAwareLogger.ERROR_INT,
e.getMessage(), null, e);
+ locationAwareLogger.log(
+ null, fqcn, LocationAwareLogger.ERROR_INT, e == null ?
null : e.getMessage(), null, e);
return;
}
- logger.error(e.getMessage(), e);
+ logger.error(e == null ? null : e.getMessage(), e);
}
@Override
public void error(String msg, Throwable e) {
if (locationAwareLogger != null) {
- locationAwareLogger.log(null, FQCN, LocationAwareLogger.ERROR_INT,
msg, null, e);
+ locationAwareLogger.log(null, fqcn, LocationAwareLogger.ERROR_INT,
msg, null, e);
return;
}
logger.error(msg, e);
diff --git
a/dubbo-common/src/main/java/org/apache/dubbo/common/logger/slf4j/Slf4jLoggerAdapter.java
b/dubbo-common/src/main/java/org/apache/dubbo/common/logger/slf4j/Slf4jLoggerAdapter.java
index c249394f66..a0e35d1bfd 100644
---
a/dubbo-common/src/main/java/org/apache/dubbo/common/logger/slf4j/Slf4jLoggerAdapter.java
+++
b/dubbo-common/src/main/java/org/apache/dubbo/common/logger/slf4j/Slf4jLoggerAdapter.java
@@ -47,6 +47,16 @@ public class Slf4jLoggerAdapter implements LoggerAdapter {
return new Slf4jLogger(org.slf4j.LoggerFactory.getLogger(key));
}
+ @Override
+ public Logger getLogger(String fqcn, Class<?> key) {
+ return new Slf4jLogger(fqcn, org.slf4j.LoggerFactory.getLogger(key));
+ }
+
+ @Override
+ public Logger getLogger(String fqcn, String key) {
+ return new Slf4jLogger(fqcn, org.slf4j.LoggerFactory.getLogger(key));
+ }
+
@Override
public Level getLevel() {
return level;
diff --git
a/dubbo-common/src/test/java/org/apache/dubbo/common/logger/LoggerTest.java
b/dubbo-common/src/test/java/org/apache/dubbo/common/logger/LoggerTest.java
index 0cac24d2e6..f34a27bcec 100644
--- a/dubbo-common/src/test/java/org/apache/dubbo/common/logger/LoggerTest.java
+++ b/dubbo-common/src/test/java/org/apache/dubbo/common/logger/LoggerTest.java
@@ -21,6 +21,8 @@ import org.apache.dubbo.common.logger.jdk.JdkLoggerAdapter;
import org.apache.dubbo.common.logger.log4j.Log4jLoggerAdapter;
import org.apache.dubbo.common.logger.log4j2.Log4j2LoggerAdapter;
import org.apache.dubbo.common.logger.slf4j.Slf4jLoggerAdapter;
+import org.apache.dubbo.common.logger.support.FailsafeErrorTypeAwareLogger;
+import org.apache.dubbo.common.logger.support.FailsafeLogger;
import java.lang.reflect.InvocationTargetException;
import java.util.stream.Stream;
@@ -49,7 +51,8 @@ class LoggerTest {
void testAllLogMethod(Class<? extends LoggerAdapter> loggerAdapter) throws
Exception {
LoggerAdapter adapter =
loggerAdapter.getDeclaredConstructor().newInstance();
adapter.setLevel(Level.ALL);
- Logger logger = adapter.getLogger(this.getClass());
+ Logger logger =
+ new
FailsafeErrorTypeAwareLogger(adapter.getLogger(FailsafeLogger.class.getName(),
this.getClass()));
logger.error("error");
logger.warn("warn");
logger.info("info");