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