diff --git a/dubbo-common/pom.xml b/dubbo-common/pom.xml index 2c00f88a6fee737c39758e66c9458799cda992eb..063114611cc109411a8f442fe052c2304a96c2b4 100644 --- a/dubbo-common/pom.xml +++ b/dubbo-common/pom.xml @@ -30,6 +30,14 @@ true + + org.slf4j + slf4j-api + + + commons-logging + commons-logging-api + log4j log4j diff --git a/dubbo-common/src/main/java/com/alibaba/dubbo/common/logger/LoggerFactorySupport.java b/dubbo-common/src/main/java/com/alibaba/dubbo/common/logger/LoggerAdapter.java similarity index 93% rename from dubbo-common/src/main/java/com/alibaba/dubbo/common/logger/LoggerFactorySupport.java rename to dubbo-common/src/main/java/com/alibaba/dubbo/common/logger/LoggerAdapter.java index 19f18171b5809a896aada547d5ee075848f8470b..b83e36501b0b91e0f68d5c9b70c415e30f45df72 100644 --- a/dubbo-common/src/main/java/com/alibaba/dubbo/common/logger/LoggerFactorySupport.java +++ b/dubbo-common/src/main/java/com/alibaba/dubbo/common/logger/LoggerAdapter.java @@ -15,14 +15,17 @@ */ package com.alibaba.dubbo.common.logger; -import java.io.File; +import java.io.File; + +import com.alibaba.dubbo.common.extension.SPI; /** * 日志输出器供给器 * * @author william.liangf - */ -public interface LoggerFactorySupport { + */ +@SPI +public interface LoggerAdapter { /** * 获取日志输出器 diff --git a/dubbo-common/src/main/java/com/alibaba/dubbo/common/logger/LoggerFactory.java b/dubbo-common/src/main/java/com/alibaba/dubbo/common/logger/LoggerFactory.java index f0dfadf3250c3ca3cec12eb8c45f067fb383fc3f..dca07d250a7f332ae63a55b6af7b17ca8b8c4fda 100644 --- a/dubbo-common/src/main/java/com/alibaba/dubbo/common/logger/LoggerFactory.java +++ b/dubbo-common/src/main/java/com/alibaba/dubbo/common/logger/LoggerFactory.java @@ -15,11 +15,13 @@ */ package com.alibaba.dubbo.common.logger; -import java.io.File; - -import com.alibaba.dubbo.common.logger.support.FailsafeLogger; -import com.alibaba.dubbo.common.logger.support.JdkLoggerFactory; -import com.alibaba.dubbo.common.logger.support.Log4jLoggerFactory; +import java.io.File; + +import com.alibaba.dubbo.common.logger.jcl.JclLoggerAdapter; +import com.alibaba.dubbo.common.logger.jdk.JdkLoggerAdapter; +import com.alibaba.dubbo.common.logger.log4j.Log4jLoggerAdapter; +import com.alibaba.dubbo.common.logger.slf4j.Slf4jLoggerAdapter; +import com.alibaba.dubbo.common.logger.support.FailsafeLogger; /** * 日志输出器工厂 @@ -31,28 +33,36 @@ public class LoggerFactory { private LoggerFactory() { } - private static volatile LoggerFactorySupport LOGGER_FACTORY; + private static volatile LoggerAdapter LOGGER_ADAPTER; // 查找常用的日志框架 static { try { - setLoggerFactory(new Log4jLoggerFactory()); + setLoggerAdapter(new Slf4jLoggerAdapter()); } catch (Throwable e1) { - setLoggerFactory(new JdkLoggerFactory()); + try { + setLoggerAdapter(new JclLoggerAdapter()); + } catch (Throwable e2) { + try { + setLoggerAdapter(new Log4jLoggerAdapter()); + } catch (Throwable e3) { + setLoggerAdapter(new JdkLoggerAdapter()); + } + } } } /** * 设置日志输出器供给器 * - * @param loggerFactory + * @param loggerAdapter * 日志输出器供给器 */ - public static void setLoggerFactory(LoggerFactorySupport loggerFactory) { - if (loggerFactory != null) { - Logger logger = loggerFactory.getLogger(LoggerFactory.class.getName()); - logger.info("using logger: " + loggerFactory.getClass().getName()); - LoggerFactory.LOGGER_FACTORY = loggerFactory; + public static void setLoggerAdapter(LoggerAdapter loggerAdapter) { + if (loggerAdapter != null) { + Logger logger = loggerAdapter.getLogger(LoggerFactory.class.getName()); + logger.info("using logger: " + loggerAdapter.getClass().getName()); + LoggerFactory.LOGGER_ADAPTER = loggerAdapter; } } @@ -64,7 +74,7 @@ public class LoggerFactory { * @return 日志输出器, 后验条件: 不返回null. */ public static Logger getLogger(Class key) { - return new FailsafeLogger(LOGGER_FACTORY.getLogger(key)); + return new FailsafeLogger(LOGGER_ADAPTER.getLogger(key)); } /** @@ -75,7 +85,7 @@ public class LoggerFactory { * @return 日志输出器, 后验条件: 不返回null. */ public static Logger getLogger(String key) { - return new FailsafeLogger(LOGGER_FACTORY.getLogger(key)); + return new FailsafeLogger(LOGGER_ADAPTER.getLogger(key)); } /** @@ -84,7 +94,7 @@ public class LoggerFactory { * @param level 日志级别 */ public static void setLevel(Level level) { - LOGGER_FACTORY.setLevel(level); + LOGGER_ADAPTER.setLevel(level); } /** @@ -93,7 +103,7 @@ public class LoggerFactory { * @return 日志级别 */ public static Level getLevel() { - return LOGGER_FACTORY.getLevel(); + return LOGGER_ADAPTER.getLevel(); } /** @@ -102,7 +112,7 @@ public class LoggerFactory { * @return 日志文件 */ public static File getFile() { - return LOGGER_FACTORY.getFile(); + return LOGGER_ADAPTER.getFile(); } } \ No newline at end of file diff --git a/dubbo-common/src/main/java/com/alibaba/dubbo/common/logger/support/JdkLogger.java b/dubbo-common/src/main/java/com/alibaba/dubbo/common/logger/jdk/JdkLogger.java similarity index 97% rename from dubbo-common/src/main/java/com/alibaba/dubbo/common/logger/support/JdkLogger.java rename to dubbo-common/src/main/java/com/alibaba/dubbo/common/logger/jdk/JdkLogger.java index ddcfebc7120e4a146a8d4be4b03a1aa3ddb37083..f3ce92968b027195c6d67bff563ddeaad0174514 100644 --- a/dubbo-common/src/main/java/com/alibaba/dubbo/common/logger/support/JdkLogger.java +++ b/dubbo-common/src/main/java/com/alibaba/dubbo/common/logger/jdk/JdkLogger.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.alibaba.dubbo.common.logger.support; +package com.alibaba.dubbo.common.logger.jdk; import java.util.logging.Level; diff --git a/dubbo-common/src/main/java/com/alibaba/dubbo/common/logger/support/JdkLoggerFactory.java b/dubbo-common/src/main/java/com/alibaba/dubbo/common/logger/jdk/JdkLoggerAdapter.java similarity index 94% rename from dubbo-common/src/main/java/com/alibaba/dubbo/common/logger/support/JdkLoggerFactory.java rename to dubbo-common/src/main/java/com/alibaba/dubbo/common/logger/jdk/JdkLoggerAdapter.java index fb8cb6b8abf697eb0e69d1744d643cafd08be432..e3c21ed82e1c52638da395e2ced43fd33ceb8325 100644 --- a/dubbo-common/src/main/java/com/alibaba/dubbo/common/logger/support/JdkLoggerFactory.java +++ b/dubbo-common/src/main/java/com/alibaba/dubbo/common/logger/jdk/JdkLoggerAdapter.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.alibaba.dubbo.common.logger.support; +package com.alibaba.dubbo.common.logger.jdk; import java.io.File; import java.io.InputStream; @@ -24,15 +24,15 @@ import java.util.logging.LogManager; import com.alibaba.dubbo.common.logger.Level; import com.alibaba.dubbo.common.logger.Logger; -import com.alibaba.dubbo.common.logger.LoggerFactorySupport; +import com.alibaba.dubbo.common.logger.LoggerAdapter; -public class JdkLoggerFactory implements LoggerFactorySupport { +public class JdkLoggerAdapter implements LoggerAdapter { private static final String GLOBAL_LOGGER_NAME = "global"; private File file; - public JdkLoggerFactory() { + public JdkLoggerAdapter() { try { InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream("logging.properties"); if (in != null) { diff --git a/dubbo-common/src/main/java/com/alibaba/dubbo/common/logger/support/Log4jLogger.java b/dubbo-common/src/main/java/com/alibaba/dubbo/common/logger/log4j/Log4jLogger.java similarity index 95% rename from dubbo-common/src/main/java/com/alibaba/dubbo/common/logger/support/Log4jLogger.java rename to dubbo-common/src/main/java/com/alibaba/dubbo/common/logger/log4j/Log4jLogger.java index c257b87daf851d3eff01ca2f779d64ded1d89ea8..006d402a46199b8d986b6f16ee9f1b4eb6dc96a7 100644 --- a/dubbo-common/src/main/java/com/alibaba/dubbo/common/logger/support/Log4jLogger.java +++ b/dubbo-common/src/main/java/com/alibaba/dubbo/common/logger/log4j/Log4jLogger.java @@ -13,11 +13,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.alibaba.dubbo.common.logger.support; +package com.alibaba.dubbo.common.logger.log4j; import org.apache.log4j.Level; import com.alibaba.dubbo.common.logger.Logger; +import com.alibaba.dubbo.common.logger.support.FailsafeLogger; public class Log4jLogger implements Logger { diff --git a/dubbo-common/src/main/java/com/alibaba/dubbo/common/logger/support/Log4jLoggerFactory.java b/dubbo-common/src/main/java/com/alibaba/dubbo/common/logger/log4j/Log4jLoggerAdapter.java similarity index 93% rename from dubbo-common/src/main/java/com/alibaba/dubbo/common/logger/support/Log4jLoggerFactory.java rename to dubbo-common/src/main/java/com/alibaba/dubbo/common/logger/log4j/Log4jLoggerAdapter.java index 369560eb6a2b523b004283173b5d7b8a763b6d78..57f74889a421fd430bb6f3363f01715c4e4c5b28 100644 --- a/dubbo-common/src/main/java/com/alibaba/dubbo/common/logger/support/Log4jLoggerFactory.java +++ b/dubbo-common/src/main/java/com/alibaba/dubbo/common/logger/log4j/Log4jLoggerAdapter.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.alibaba.dubbo.common.logger.support; +package com.alibaba.dubbo.common.logger.log4j; import java.io.File; import java.util.Enumeration; @@ -24,14 +24,14 @@ import org.apache.log4j.LogManager; import com.alibaba.dubbo.common.logger.Level; import com.alibaba.dubbo.common.logger.Logger; -import com.alibaba.dubbo.common.logger.LoggerFactorySupport; +import com.alibaba.dubbo.common.logger.LoggerAdapter; -public class Log4jLoggerFactory implements LoggerFactorySupport { +public class Log4jLoggerAdapter implements LoggerAdapter { private File file; @SuppressWarnings("unchecked") - public Log4jLoggerFactory() { + public Log4jLoggerAdapter() { try { org.apache.log4j.Logger logger = LogManager.getRootLogger(); if (logger != null) { diff --git a/pom.xml b/pom.xml index 3c81888e3e00b7b36029404657722879793e7550..2a779a1c355de0aa9ad09453026db92ace8bfd7f 100644 --- a/pom.xml +++ b/pom.xml @@ -64,8 +64,9 @@ 2.0-M5.1 3.0 - 1.2.16 1.6.2 + 1.1 + 1.2.16 4.10 3.0 @@ -230,16 +231,21 @@ ${guice_version} - - log4j - log4j - ${log4j_version} - org.slf4j slf4j-api ${slf4j_version} + + commons-logging + commons-logging-api + ${jcl_version} + + + log4j + log4j + ${log4j_version} + junit