diff --git a/pom.xml b/pom.xml index a161b60179..f7fb32ded1 100644 --- a/pom.xml +++ b/pom.xml @@ -400,7 +400,7 @@ org.mybatis mybatis - 3.1.1 + 3.3.0 provided true @@ -415,7 +415,7 @@ log4j log4j - 1.2.16 + 1.2.17 provided @@ -430,6 +430,18 @@ 1.6.1 provided + + org.apache.logging.log4j + log4j-api + 2.3 + provided + + + org.apache.logging.log4j + log4j-core + 2.3 + provided + mysql diff --git a/src/main/java/com/alibaba/druid/support/logging/Log4j2Impl.java b/src/main/java/com/alibaba/druid/support/logging/Log4j2Impl.java new file mode 100644 index 0000000000..935733b0d5 --- /dev/null +++ b/src/main/java/com/alibaba/druid/support/logging/Log4j2Impl.java @@ -0,0 +1,106 @@ +package com.alibaba.druid.support.logging; + +import org.apache.logging.log4j.Level; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class Log4j2Impl implements Log { + + private Logger log; + + private int errorCount; + private int warnCount; + private int infoCount; + private int debugCount; + + /** + * @since 0.2.21 + * @param log + */ + public Log4j2Impl(Logger log){ + this.log = log; + } + + public Log4j2Impl(String loggerName){ + log = LogManager.getLogger(loggerName); + } + + public Logger getLog() { + return log; + } + + public boolean isDebugEnabled() { + return log.isDebugEnabled(); + } + + public void error(String s, Throwable e) { + errorCount++; + log.error(s, e); + } + + public void error(String s) { + errorCount++; + log.error(s); + } + + public void debug(String s) { + debugCount++; + log.debug(s); + } + + public void debug(String s, Throwable e) { + debugCount++; + log.debug(s, e); + } + + public void warn(String s) { + log.warn(s); + warnCount++; + } + + public void warn(String s, Throwable e) { + log.warn(s, e); + warnCount++; + } + + public int getWarnCount() { + return warnCount; + } + + public int getErrorCount() { + return errorCount; + } + + public void resetStat() { + errorCount = 0; + warnCount = 0; + infoCount = 0; + debugCount = 0; + } + + public int getDebugCount() { + return debugCount; + } + + public boolean isInfoEnabled() { + return log.isInfoEnabled(); + } + + public void info(String msg) { + infoCount++; + log.info(msg); + } + + public boolean isWarnEnabled() { + return log.isEnabled(Level.WARN); + } + + public int getInfoCount() { + return infoCount; + } + + public String toString() { + return log.toString(); + } + +} 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 81f6c2e98c..2a1114a8f3 100644 --- a/src/main/java/com/alibaba/druid/support/logging/LogFactory.java +++ b/src/main/java/com/alibaba/druid/support/logging/LogFactory.java @@ -27,6 +27,7 @@ public class LogFactory { // 优先选择log4j,而非Apache Common Logging. 因为后者无法设置真实Log调用者的信息 tryImplementation("org.apache.log4j.Logger", "com.alibaba.druid.support.logging.Log4jImpl"); + tryImplementation("org.apache.logging.log4j.Logger", "com.alibaba.druid.support.logging.Log4j2Impl"); tryImplementation("org.slf4j.Logger", "com.alibaba.druid.support.logging.SLF4JImpl"); tryImplementation("org.apache.commons.logging.LogFactory", "com.alibaba.druid.support.logging.JakartaCommonsLoggingImpl");