Skip to content

Commit 8a4f00c

Browse files
committed
fix log level is null in Slf4j and fix not valid in Log4j2
1 parent 02ba6b9 commit 8a4f00c

File tree

3 files changed

+40
-0
lines changed

3 files changed

+40
-0
lines changed

dubbo-common/src/main/java/org/apache/dubbo/common/logger/log4j2/Log4j2LoggerAdapter.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import org.apache.dubbo.common.logger.LoggerAdapter;
2222

2323
import org.apache.logging.log4j.LogManager;
24+
import org.apache.logging.log4j.core.config.Configurator;
2425

2526
import java.io.File;
2627

@@ -30,6 +31,12 @@ public class Log4j2LoggerAdapter implements LoggerAdapter {
3031
private Level level;
3132

3233
public Log4j2LoggerAdapter() {
34+
try {
35+
org.apache.logging.log4j.Logger logger = LogManager.getRootLogger();
36+
this.level = fromLog4j2Level(logger.getLevel());
37+
} catch (Exception t) {
38+
// ignore
39+
}
3340
}
3441

3542
private static org.apache.logging.log4j.Level toLog4j2Level(Level level) {
@@ -94,6 +101,7 @@ public Level getLevel() {
94101
@Override
95102
public void setLevel(Level level) {
96103
this.level = level;
104+
Configurator.setLevel(LogManager.getRootLogger(), toLog4j2Level(level));
97105
}
98106

99107
@Override

dubbo-common/src/main/java/org/apache/dubbo/common/logger/slf4j/Slf4jLogger.java

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
*/
1717
package org.apache.dubbo.common.logger.slf4j;
1818

19+
import org.apache.dubbo.common.logger.Level;
1920
import org.apache.dubbo.common.logger.Logger;
2021
import org.apache.dubbo.common.logger.support.FailsafeLogger;
2122

@@ -198,4 +199,27 @@ public boolean isErrorEnabled() {
198199
return logger.isErrorEnabled();
199200
}
200201

202+
public static Level getLevel(org.slf4j.Logger logger) {
203+
if (logger.isTraceEnabled()) {
204+
return Level.TRACE;
205+
}
206+
if (logger.isDebugEnabled()) {
207+
return Level.DEBUG;
208+
}
209+
if (logger.isInfoEnabled()) {
210+
return Level.INFO;
211+
}
212+
if (logger.isWarnEnabled()) {
213+
return Level.WARN;
214+
}
215+
if (logger.isErrorEnabled()) {
216+
return Level.ERROR;
217+
}
218+
return Level.OFF;
219+
}
220+
221+
public Level getLevel() {
222+
return getLevel(logger);
223+
}
224+
201225
}

dubbo-common/src/main/java/org/apache/dubbo/common/logger/slf4j/Slf4jLoggerAdapter.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import org.apache.dubbo.common.logger.Logger;
2121
import org.apache.dubbo.common.logger.LoggerAdapter;
2222
import org.apache.dubbo.common.utils.ClassUtils;
23+
import org.slf4j.LoggerFactory;
2324

2425
import java.io.File;
2526

@@ -28,6 +29,12 @@ public class Slf4jLoggerAdapter implements LoggerAdapter {
2829
private Level level;
2930
private File file;
3031

32+
private static final org.slf4j.Logger ROOT_LOGGER = LoggerFactory.getLogger(org.slf4j.Logger.ROOT_LOGGER_NAME);
33+
34+
public Slf4jLoggerAdapter() {
35+
this.level = Slf4jLogger.getLevel(ROOT_LOGGER);
36+
}
37+
3138
@Override
3239
public Logger getLogger(String key) {
3340
return new Slf4jLogger(org.slf4j.LoggerFactory.getLogger(key));
@@ -45,6 +52,7 @@ public Level getLevel() {
4552

4653
@Override
4754
public void setLevel(Level level) {
55+
getLogger(Slf4jLoggerAdapter.class).warn(String.format("The level of slf4j logger can not be set, using the default level: %s",Slf4jLogger.getLevel(ROOT_LOGGER)));
4856
this.level = level;
4957
}
5058

0 commit comments

Comments
 (0)