From 61f134da97c7b8ebee2d3907844f1c9f12f79cd3 Mon Sep 17 00:00:00 2001 From: "bohr.qiu" Date: Sun, 5 May 2013 19:06:26 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E5=A2=9E=E5=8A=A0slf4j=E6=97=A5=E5=BF=97?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../druid/support/logging/LogFactory.java | 1 + .../druid/support/logging/SLF4JImpl.java | 105 ++++++++++++++++++ 2 files changed, 106 insertions(+) create mode 100644 src/main/java/com/alibaba/druid/support/logging/SLF4JImpl.java diff --git a/src/main/java/com/alibaba/druid/support/logging/LogFactory.java b/src/main/java/com/alibaba/druid/support/logging/LogFactory.java index dbdc21aba9..7b65dbc8ff 100644 --- a/src/main/java/com/alibaba/druid/support/logging/LogFactory.java +++ b/src/main/java/com/alibaba/druid/support/logging/LogFactory.java @@ -26,6 +26,7 @@ public class LogFactory { // TODO add slf4j logging // 优先选择log4j,而非Apache Common Logging. 因为后者无法设置真实Log调用者的信息 + tryImplementation("org.slf4j.Logger", "com.alibaba.druid.support.logging.SLF4JImpl"); tryImplementation("org.apache.log4j.Logger", "com.alibaba.druid.support.logging.Log4jImpl"); tryImplementation("java.util.logging.Logger", "com.alibaba.druid.support.logging.Jdk14LoggingImpl"); tryImplementation("org.apache.commons.logging.LogFactory", diff --git a/src/main/java/com/alibaba/druid/support/logging/SLF4JImpl.java b/src/main/java/com/alibaba/druid/support/logging/SLF4JImpl.java new file mode 100644 index 0000000000..bfab5af28b --- /dev/null +++ b/src/main/java/com/alibaba/druid/support/logging/SLF4JImpl.java @@ -0,0 +1,105 @@ +package com.alibaba.druid.support.logging; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.slf4j.spi.LocationAwareLogger; + +public class SLF4JImpl implements Log { + private static final String callerFQCN = SLF4JImpl.class.getName(); + private static final Logger testLogger = LoggerFactory.getLogger(SLF4JImpl.class); + static { + //if the logger is not a LocationAwareLogger instance, it can not get correct stack StackTraceElement + //so ignore this implementation. + if (!(testLogger instanceof LocationAwareLogger)) { + throw new UnsupportedOperationException(testLogger.getClass()+" is not a suitable logger"); + } + } + private int errorCount; + private int warnCount; + private int infoCount; + private LocationAwareLogger log; + + public SLF4JImpl(Class clazz) { + Logger log = LoggerFactory.getLogger(clazz); + if (log instanceof LocationAwareLogger) { + this.log = (LocationAwareLogger) log; + } + } + + @Override + public boolean isDebugEnabled() { + return log.isDebugEnabled(); + } + + @Override + public void error(String msg, Throwable e) { + log.log(null, callerFQCN, LocationAwareLogger.ERROR_INT, msg, null, e); + errorCount++; + } + + @Override + public void error(String msg) { + log.log(null, callerFQCN, LocationAwareLogger.ERROR_INT, msg, null, null); + errorCount++; + } + + @Override + public boolean isInfoEnabled() { + return log.isInfoEnabled(); + } + + @Override + public void info(String msg) { + infoCount++; + } + + @Override + public void debug(String msg) { + log.log(null, callerFQCN, LocationAwareLogger.DEBUG_INT, msg, null, null); + } + + @Override + public void debug(String msg, Throwable e) { + log.log(null, callerFQCN, LocationAwareLogger.ERROR_INT, msg, null, e); + } + + @Override + public boolean isWarnEnabled() { + return log.isWarnEnabled(); + } + + @Override + public void warn(String msg) { + log.log(null, callerFQCN, LocationAwareLogger.WARN_INT, msg, null, null); + warnCount++; + } + + @Override + public void warn(String msg, Throwable e) { + log.log(null, callerFQCN, LocationAwareLogger.WARN_INT, msg, null, e); + warnCount++; + } + + @Override + public int getErrorCount() { + return errorCount; + } + + @Override + public int getWarnCount() { + return warnCount; + } + + @Override + public int getInfoCount() { + return infoCount; + } + + @Override + public void resetStat() { + errorCount = 0; + warnCount = 0; + infoCount = 0; + } + +} From 39e70139fdeab484f705d26fafa1c1b992048651 Mon Sep 17 00:00:00 2001 From: wenshao Date: Sat, 11 May 2013 01:14:37 +0800 Subject: [PATCH 2/3] bug fixed for ConfigFilter set MaxWait error --- .../java/com/alibaba/druid/pool/DruidAbstractDataSource.java | 2 -- src/main/java/com/alibaba/druid/pool/DruidDataSource.java | 2 ++ .../com/alibaba/druid/filter/config/ConfigFileGenerator.java | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/alibaba/druid/pool/DruidAbstractDataSource.java b/src/main/java/com/alibaba/druid/pool/DruidAbstractDataSource.java index 8e424e790b..6fc3528c78 100644 --- a/src/main/java/com/alibaba/druid/pool/DruidAbstractDataSource.java +++ b/src/main/java/com/alibaba/druid/pool/DruidAbstractDataSource.java @@ -248,8 +248,6 @@ public abstract class DruidAbstractDataSource extends WrapperAdapter implements this.useLocalSessionState = useLocalSessionState; } - - public boolean isOracle() { return isOracle; } diff --git a/src/main/java/com/alibaba/druid/pool/DruidDataSource.java b/src/main/java/com/alibaba/druid/pool/DruidDataSource.java index 674fa62d43..e50294ec67 100644 --- a/src/main/java/com/alibaba/druid/pool/DruidDataSource.java +++ b/src/main/java/com/alibaba/druid/pool/DruidDataSource.java @@ -33,6 +33,7 @@ import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicLong; import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; import javax.management.JMException; import javax.management.ObjectName; @@ -383,6 +384,7 @@ public class DruidDataSource extends DruidAbstractDataSource implements DruidDat return; } + final ReentrantLock lock = this.lock; try { lock.lockInterruptibly(); } catch (InterruptedException e) { diff --git a/src/test/java/com/alibaba/druid/filter/config/ConfigFileGenerator.java b/src/test/java/com/alibaba/druid/filter/config/ConfigFileGenerator.java index a3e5ca1218..53e7923524 100644 --- a/src/test/java/com/alibaba/druid/filter/config/ConfigFileGenerator.java +++ b/src/test/java/com/alibaba/druid/filter/config/ConfigFileGenerator.java @@ -29,6 +29,7 @@ public class ConfigFileGenerator { filePath = file.getAbsolutePath(); out = new PrintWriter(new FileWriter(file)); + out.println(DruidDataSourceFactory.PROP_MAXWAIT + "=1000"); out.println(DruidDataSourceFactory.PROP_USERNAME + "=test1"); out.println(DruidDataSourceFactory.PROP_PASSWORD + "=OJfUm6WCHi7EuXqE6aEc+Po2xFrAGBeSNy8O2jWhV2FTG8/5kbRRr2rjNKhptlevm/03Y0048P7h88gdUOXAYg=="); out.println(DruidDataSourceFactory.PROP_URL + "=jdbc:oracle:thin:@"); From c6654e23f86ad611e8927be84cde0debd59a85ab Mon Sep 17 00:00:00 2001 From: wenshao Date: Sat, 11 May 2013 13:48:43 +0800 Subject: [PATCH 3/3] 0.2.18 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 699a9060d6..99a6690aed 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.alibaba druid - 0.2.18-SNAPSHOT + 0.2.18 jar druid