From 8a592d86373874d4fd87ace96908f56e1cf67f84 Mon Sep 17 00:00:00 2001 From: Gray Watson Date: Tue, 8 Dec 2020 21:04:12 -0500 Subject: [PATCH 1/2] Move the log4j classes to core. Thanks to @MarcMil. --- pom.xml | 15 +++ .../com/j256/ormlite/logger/Log4j2Log.java | 91 +++++++++++++++++++ .../com/j256/ormlite/logger/Log4jLog.java | 51 +++++++++++ .../com/j256/ormlite/logger/Log4jLogTest.java | 8 ++ .../ormlite/logger/LoggerFactoryTest.java | 9 +- 5 files changed, 170 insertions(+), 4 deletions(-) create mode 100644 src/main/java/com/j256/ormlite/logger/Log4j2Log.java create mode 100644 src/main/java/com/j256/ormlite/logger/Log4jLog.java create mode 100644 src/test/java/com/j256/ormlite/logger/Log4jLogTest.java diff --git a/pom.xml b/pom.xml index 5833f09dc..c626533f8 100644 --- a/pom.xml +++ b/pom.xml @@ -51,6 +51,9 @@ 2.1 1.1.1 1.7.2 + + 1.2.17 + 2.0-beta4 @@ -390,6 +393,18 @@ ${commons-logging-version} provided + + log4j + log4j + ${log4j-version} + provided + + + org.apache.logging.log4j + log4j-api + ${log4j2-version} + provided + diff --git a/src/main/java/com/j256/ormlite/logger/Log4j2Log.java b/src/main/java/com/j256/ormlite/logger/Log4j2Log.java new file mode 100644 index 000000000..c97727a61 --- /dev/null +++ b/src/main/java/com/j256/ormlite/logger/Log4j2Log.java @@ -0,0 +1,91 @@ +package com.j256.ormlite.logger; + +import com.j256.ormlite.logger.Log; + +/** + * Class which implements our {@link com.j256.ormlite.logger.Log} interface by delegating to Apache Log4j2. + * + * @author graywatson + */ +public class Log4j2Log implements Log { + + private final org.apache.logging.log4j.Logger logger; + + public Log4j2Log(String className) { + this.logger = org.apache.logging.log4j.LogManager.getLogger(className); + } + + @Override + public boolean isLevelEnabled(Level level) { + switch (level) { + case TRACE: + return logger.isTraceEnabled(); + case DEBUG: + return logger.isDebugEnabled(); + case INFO: + return logger.isInfoEnabled(); + case WARNING: + return logger.isWarnEnabled(); + case ERROR: + return logger.isErrorEnabled(); + case FATAL: + return logger.isFatalEnabled(); + default: + return logger.isInfoEnabled(); + } + } + + @Override + public void log(Level level, String msg) { + switch (level) { + case TRACE: + logger.trace(msg); + break; + case DEBUG: + logger.debug(msg); + break; + case INFO: + logger.info(msg); + break; + case WARNING: + logger.warn(msg); + break; + case ERROR: + logger.error(msg); + break; + case FATAL: + logger.fatal(msg); + break; + default: + logger.info(msg); + break; + } + } + + @Override + public void log(Level level, String msg, Throwable t) { + switch (level) { + case TRACE: + logger.trace(msg, t); + break; + case DEBUG: + logger.debug(msg, t); + break; + case INFO: + logger.info(msg, t); + break; + case WARNING: + logger.warn(msg, t); + break; + case ERROR: + logger.error(msg, t); + break; + case FATAL: + logger.fatal(msg, t); + break; + default: + logger.info(msg, t); + break; + } + } +} diff --git a/src/main/java/com/j256/ormlite/logger/Log4jLog.java b/src/main/java/com/j256/ormlite/logger/Log4jLog.java new file mode 100644 index 000000000..d02530d3f --- /dev/null +++ b/src/main/java/com/j256/ormlite/logger/Log4jLog.java @@ -0,0 +1,51 @@ +package com.j256.ormlite.logger; + +import com.j256.ormlite.logger.Log; + +/** + * Class which implements our {@link com.j256.ormlite.logger.Log} interface by delegating to Apache Log4j. + * + * @author graywatson + */ +public class Log4jLog implements Log { + + private final org.apache.log4j.Logger logger; + + public Log4jLog(String className) { + this.logger = org.apache.log4j.Logger.getLogger(className); + } + + @Override + public boolean isLevelEnabled(Level level) { + return logger.isEnabledFor(levelToLog4jLevel(level)); + } + + @Override + public void log(Level level, String msg) { + logger.log(levelToLog4jLevel(level), msg); + } + + @Override + public void log(Level level, String msg, Throwable t) { + logger.log(levelToLog4jLevel(level), msg, t); + } + + private org.apache.log4j.Level levelToLog4jLevel(com.j256.ormlite.logger.Log.Level level) { + switch (level) { + case TRACE: + return org.apache.log4j.Level.TRACE; + case DEBUG: + return org.apache.log4j.Level.DEBUG; + case INFO: + return org.apache.log4j.Level.INFO; + case WARNING: + return org.apache.log4j.Level.WARN; + case ERROR: + return org.apache.log4j.Level.ERROR; + case FATAL: + return org.apache.log4j.Level.FATAL; + default: + return org.apache.log4j.Level.INFO; + } + } +} diff --git a/src/test/java/com/j256/ormlite/logger/Log4jLogTest.java b/src/test/java/com/j256/ormlite/logger/Log4jLogTest.java new file mode 100644 index 000000000..d71f65596 --- /dev/null +++ b/src/test/java/com/j256/ormlite/logger/Log4jLogTest.java @@ -0,0 +1,8 @@ +package com.j256.ormlite.logger; + +public class Log4jLogTest extends BaseLogTest { + + public Log4jLogTest() { + super(new Log4jLog("Log4jLogTest")); + } +} diff --git a/src/test/java/com/j256/ormlite/logger/LoggerFactoryTest.java b/src/test/java/com/j256/ormlite/logger/LoggerFactoryTest.java index 3ad4b778a..727018d8d 100644 --- a/src/test/java/com/j256/ormlite/logger/LoggerFactoryTest.java +++ b/src/test/java/com/j256/ormlite/logger/LoggerFactoryTest.java @@ -34,7 +34,8 @@ public void testConstructor() throws Exception { public void testLogTypeIsAvailable() { assertFalse(LoggerFactory.LogType.ANDROID.isAvailable()); assertTrue(LoggerFactory.LogType.COMMONS_LOGGING.isAvailable()); - assertFalse(LoggerFactory.LogType.LOG4J.isAvailable()); + assertTrue(LoggerFactory.LogType.LOG4J.isAvailable()); + assertTrue(LoggerFactory.LogType.LOG4J2.isAvailable()); assertTrue(LoggerFactory.LogType.LOCAL.isAvailable()); assertTrue(LoggerFactory.LogType.LOCAL.isAvailableTestClass()); } @@ -48,9 +49,9 @@ public void testLogTypeUnknownLog() { log = LoggerFactory.LogType.COMMONS_LOGGING.createLog(getClass().getName()); assertTrue(log instanceof CommonsLoggingLog); log = LoggerFactory.LogType.LOG4J.createLog(getClass().getName()); - assertTrue(log instanceof LocalLog); - log = LoggerFactory.LogType.LOG4J.createLog(getClass().getName()); - assertTrue(log instanceof LocalLog); + assertTrue(log instanceof Log4jLog); + log = LoggerFactory.LogType.LOG4J2.createLog(getClass().getName()); + assertTrue(log instanceof Log4j2Log); log = LoggerFactory.LogType.LOCAL.createLog(getClass().getName()); assertTrue(log instanceof LocalLog); log = LoggerFactory.LogType.LOCAL.createLog(getClass().getName()); From f1f97b412a057006b14237c2d7a5541863de9041 Mon Sep 17 00:00:00 2001 From: Gray Watson Date: Tue, 8 Dec 2020 21:10:22 -0500 Subject: [PATCH 2/2] cp --- src/main/javadoc/doc-files/changelog.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/javadoc/doc-files/changelog.txt b/src/main/javadoc/doc-files/changelog.txt index 362f7a5de..07b791eea 100644 --- a/src/main/javadoc/doc-files/changelog.txt +++ b/src/main/javadoc/doc-files/changelog.txt @@ -9,6 +9,7 @@ * JDBC: Update the DB2 driver class. Thanks to mauro-palumbo. * JDBC: Added support for create table if not exists for HSQLDB versions 2.3.X and greater. Thanks to lukewhitt. * JDBC: Fixed a problem with H2's handling of boolean fields. + * JDBC: Fixed the log4j logger classes broken in 5.2. Also moved them over to core. Thanks to MarcMil. 5.2: 11/14/2020 * JDBC: Refactored the JDBC package to make it java9 compliant by moving all classes under jdbc subpackage.