Skip to content

Commit 71f7600

Browse files
authored
[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
1 parent 89a7375 commit 71f7600

10 files changed

Lines changed: 197 additions & 79 deletions

File tree

dubbo-common/src/main/java/org/apache/dubbo/common/logger/FluentLoggerImpl.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,12 @@ final class FluentLoggerImpl implements FluentLogger {
3636
private Object[] args;
3737

3838
FluentLoggerImpl(Class<?> key) {
39-
delegate = LoggerFactory.getErrorTypeAwareLogger(key);
39+
delegate = LoggerFactory.getErrorTypeAwareLogger(FluentLoggerImpl.class.getName(), key);
4040
root = this;
4141
}
4242

4343
FluentLoggerImpl(String key) {
44-
delegate = LoggerFactory.getErrorTypeAwareLogger(key);
44+
delegate = LoggerFactory.getErrorTypeAwareLogger(FluentLoggerImpl.class.getName(), key);
4545
root = this;
4646
}
4747

dubbo-common/src/main/java/org/apache/dubbo/common/logger/LoggerAdapter.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,28 @@ public interface LoggerAdapter {
4343
*/
4444
Logger getLogger(String key);
4545

46+
/**
47+
* Get a logger
48+
*
49+
* @param fqcn the full qualified class name of caller
50+
* @param key the returned logger will be named after clazz
51+
* @return logger
52+
*/
53+
default Logger getLogger(String fqcn, Class<?> key) {
54+
return getLogger(key);
55+
}
56+
57+
/**
58+
* Get a logger
59+
*
60+
* @param fqcn the full qualified class name of caller
61+
* @param key the returned logger will be named after key
62+
* @return logger
63+
*/
64+
default Logger getLogger(String fqcn, String key) {
65+
return getLogger(key);
66+
}
67+
4668
/**
4769
* Get the current logging level
4870
*

dubbo-common/src/main/java/org/apache/dubbo/common/logger/LoggerFactory.java

Lines changed: 34 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import org.apache.dubbo.common.logger.support.FailsafeErrorTypeAwareLogger;
2626
import org.apache.dubbo.common.logger.support.FailsafeLogger;
2727
import org.apache.dubbo.common.utils.ConcurrentHashMapUtils;
28+
import org.apache.dubbo.common.utils.Pair;
2829
import org.apache.dubbo.common.utils.SystemPropertyConfigUtils;
2930
import org.apache.dubbo.rpc.model.FrameworkModel;
3031

@@ -43,7 +44,7 @@
4344
public class LoggerFactory {
4445

4546
private static final ConcurrentMap<String, FailsafeLogger> LOGGERS = new ConcurrentHashMap<>();
46-
private static final ConcurrentMap<String, FailsafeErrorTypeAwareLogger> ERROR_TYPE_AWARE_LOGGERS =
47+
private static final ConcurrentMap<Object, FailsafeErrorTypeAwareLogger> ERROR_TYPE_AWARE_LOGGERS =
4748
new ConcurrentHashMap<>();
4849
private static volatile LoggerAdapter loggerAdapter;
4950

@@ -176,10 +177,9 @@ public static Logger getLogger(String key) {
176177
* @return error type aware logger
177178
*/
178179
public static ErrorTypeAwareLogger getErrorTypeAwareLogger(Class<?> key) {
180+
final String name = key.getName();
179181
return ConcurrentHashMapUtils.computeIfAbsent(
180-
ERROR_TYPE_AWARE_LOGGERS,
181-
key.getName(),
182-
name -> new FailsafeErrorTypeAwareLogger(loggerAdapter.getLogger(name)));
182+
ERROR_TYPE_AWARE_LOGGERS, name, k -> new FailsafeErrorTypeAwareLogger(loggerAdapter.getLogger(name)));
183183
}
184184

185185
/**
@@ -190,7 +190,36 @@ public static ErrorTypeAwareLogger getErrorTypeAwareLogger(Class<?> key) {
190190
*/
191191
public static ErrorTypeAwareLogger getErrorTypeAwareLogger(String key) {
192192
return ConcurrentHashMapUtils.computeIfAbsent(
193-
ERROR_TYPE_AWARE_LOGGERS, key, k -> new FailsafeErrorTypeAwareLogger(loggerAdapter.getLogger(k)));
193+
ERROR_TYPE_AWARE_LOGGERS, key, k -> new FailsafeErrorTypeAwareLogger(loggerAdapter.getLogger(key)));
194+
}
195+
196+
/**
197+
* Get error type aware logger by FQCN and Class object.
198+
*
199+
* @param fqcn the full qualified class name of caller
200+
* @param key the returned logger will be named after clazz
201+
* @return error type aware logger
202+
*/
203+
public static ErrorTypeAwareLogger getErrorTypeAwareLogger(String fqcn, Class<?> key) {
204+
final String name = key.getName();
205+
return ConcurrentHashMapUtils.computeIfAbsent(
206+
ERROR_TYPE_AWARE_LOGGERS,
207+
Pair.of(name, fqcn),
208+
p -> new FailsafeErrorTypeAwareLogger(loggerAdapter.getLogger(fqcn, name)));
209+
}
210+
211+
/**
212+
* Get error type aware logger by FQCN and a String key.
213+
*
214+
* @param fqcn the full qualified class name of caller
215+
* @param key the returned logger will be named after key
216+
* @return error type aware logger
217+
*/
218+
public static ErrorTypeAwareLogger getErrorTypeAwareLogger(String fqcn, String key) {
219+
return ConcurrentHashMapUtils.computeIfAbsent(
220+
ERROR_TYPE_AWARE_LOGGERS,
221+
Pair.of(key, fqcn),
222+
p -> new FailsafeErrorTypeAwareLogger(loggerAdapter.getLogger(fqcn, key)));
194223
}
195224

196225
/**

dubbo-common/src/main/java/org/apache/dubbo/common/logger/log4j/Log4jLogger.java

Lines changed: 27 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -25,117 +25,123 @@
2525

2626
public class Log4jLogger implements Logger {
2727

28-
private static final String FQCN = FailsafeLogger.class.getName();
28+
private final String fqcn;
2929

3030
private final org.apache.log4j.Logger logger;
3131

3232
public Log4jLogger(org.apache.log4j.Logger logger) {
33+
this.fqcn = FailsafeLogger.class.getName();
34+
this.logger = logger;
35+
}
36+
37+
public Log4jLogger(String fqcn, org.apache.log4j.Logger logger) {
38+
this.fqcn = fqcn;
3339
this.logger = logger;
3440
}
3541

3642
@Override
3743
public void trace(String msg) {
38-
logger.log(FQCN, Level.TRACE, msg, null);
44+
logger.log(fqcn, Level.TRACE, msg, null);
3945
}
4046

4147
@Override
4248
public void trace(String msg, Object... arguments) {
4349
FormattingTuple ft = MessageFormatter.arrayFormat(msg, arguments);
44-
logger.log(FQCN, Level.TRACE, ft.getMessage(), ft.getThrowable());
50+
logger.log(fqcn, Level.TRACE, ft.getMessage(), ft.getThrowable());
4551
}
4652

4753
@Override
4854
public void trace(Throwable e) {
49-
logger.log(FQCN, Level.TRACE, e == null ? null : e.getMessage(), e);
55+
logger.log(fqcn, Level.TRACE, e == null ? null : e.getMessage(), e);
5056
}
5157

5258
@Override
5359
public void trace(String msg, Throwable e) {
54-
logger.log(FQCN, Level.TRACE, msg, e);
60+
logger.log(fqcn, Level.TRACE, msg, e);
5561
}
5662

5763
@Override
5864
public void debug(String msg) {
59-
logger.log(FQCN, Level.DEBUG, msg, null);
65+
logger.log(fqcn, Level.DEBUG, msg, null);
6066
}
6167

6268
@Override
6369
public void debug(String msg, Object... arguments) {
6470
FormattingTuple ft = MessageFormatter.arrayFormat(msg, arguments);
65-
logger.log(FQCN, Level.DEBUG, ft.getMessage(), ft.getThrowable());
71+
logger.log(fqcn, Level.DEBUG, ft.getMessage(), ft.getThrowable());
6672
}
6773

6874
@Override
6975
public void debug(Throwable e) {
70-
logger.log(FQCN, Level.DEBUG, e == null ? null : e.getMessage(), e);
76+
logger.log(fqcn, Level.DEBUG, e == null ? null : e.getMessage(), e);
7177
}
7278

7379
@Override
7480
public void debug(String msg, Throwable e) {
75-
logger.log(FQCN, Level.DEBUG, msg, e);
81+
logger.log(fqcn, Level.DEBUG, msg, e);
7682
}
7783

7884
@Override
7985
public void info(String msg) {
80-
logger.log(FQCN, Level.INFO, msg, null);
86+
logger.log(fqcn, Level.INFO, msg, null);
8187
}
8288

8389
@Override
8490
public void info(String msg, Object... arguments) {
8591
FormattingTuple ft = MessageFormatter.arrayFormat(msg, arguments);
86-
logger.log(FQCN, Level.INFO, ft.getMessage(), ft.getThrowable());
92+
logger.log(fqcn, Level.INFO, ft.getMessage(), ft.getThrowable());
8793
}
8894

8995
@Override
9096
public void info(Throwable e) {
91-
logger.log(FQCN, Level.INFO, e == null ? null : e.getMessage(), e);
97+
logger.log(fqcn, Level.INFO, e == null ? null : e.getMessage(), e);
9298
}
9399

94100
@Override
95101
public void info(String msg, Throwable e) {
96-
logger.log(FQCN, Level.INFO, msg, e);
102+
logger.log(fqcn, Level.INFO, msg, e);
97103
}
98104

99105
@Override
100106
public void warn(String msg) {
101-
logger.log(FQCN, Level.WARN, msg, null);
107+
logger.log(fqcn, Level.WARN, msg, null);
102108
}
103109

104110
@Override
105111
public void warn(String msg, Object... arguments) {
106112
FormattingTuple ft = MessageFormatter.arrayFormat(msg, arguments);
107-
logger.log(FQCN, Level.WARN, ft.getMessage(), ft.getThrowable());
113+
logger.log(fqcn, Level.WARN, ft.getMessage(), ft.getThrowable());
108114
}
109115

110116
@Override
111117
public void warn(Throwable e) {
112-
logger.log(FQCN, Level.WARN, e == null ? null : e.getMessage(), e);
118+
logger.log(fqcn, Level.WARN, e == null ? null : e.getMessage(), e);
113119
}
114120

115121
@Override
116122
public void warn(String msg, Throwable e) {
117-
logger.log(FQCN, Level.WARN, msg, e);
123+
logger.log(fqcn, Level.WARN, msg, e);
118124
}
119125

120126
@Override
121127
public void error(String msg) {
122-
logger.log(FQCN, Level.ERROR, msg, null);
128+
logger.log(fqcn, Level.ERROR, msg, null);
123129
}
124130

125131
@Override
126132
public void error(String msg, Object... arguments) {
127133
FormattingTuple ft = MessageFormatter.arrayFormat(msg, arguments);
128-
logger.log(FQCN, Level.ERROR, ft.getMessage(), ft.getThrowable());
134+
logger.log(fqcn, Level.ERROR, ft.getMessage(), ft.getThrowable());
129135
}
130136

131137
@Override
132138
public void error(Throwable e) {
133-
logger.log(FQCN, Level.ERROR, e == null ? null : e.getMessage(), e);
139+
logger.log(fqcn, Level.ERROR, e == null ? null : e.getMessage(), e);
134140
}
135141

136142
@Override
137143
public void error(String msg, Throwable e) {
138-
logger.log(FQCN, Level.ERROR, msg, e);
144+
logger.log(fqcn, Level.ERROR, msg, e);
139145
}
140146

141147
@Override

dubbo-common/src/main/java/org/apache/dubbo/common/logger/log4j/Log4jLoggerAdapter.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,16 @@ public Logger getLogger(String key) {
111111
return new Log4jLogger(LogManager.getLogger(key));
112112
}
113113

114+
@Override
115+
public Logger getLogger(String fqcn, Class<?> key) {
116+
return new Log4jLogger(fqcn, LogManager.getLogger(key));
117+
}
118+
119+
@Override
120+
public Logger getLogger(String fqcn, String key) {
121+
return new Log4jLogger(fqcn, LogManager.getLogger(key));
122+
}
123+
114124
@Override
115125
public Level getLevel() {
116126
return fromLog4jLevel(LogManager.getRootLogger().getLevel());

0 commit comments

Comments
 (0)