Skip to content

Commit 8e93997

Browse files
committed
Fix for http://code.google.com/p/mybatis/issues/detail?id=146 . Probe each logging adapter instead of just loading the logging class.
1 parent 120928a commit 8e93997

File tree

1 file changed

+9
-11
lines changed

1 file changed

+9
-11
lines changed

src/main/java/org/apache/ibatis/logging/LogFactory.java

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -45,19 +45,19 @@ public static Log getLog(Class<?> aClass) {
4545
}
4646

4747
public static synchronized void useSlf4jLogging() {
48-
setImplementation("org.slf4j.LoggerFactory", "org.apache.ibatis.logging.slf4j.Slf4jImpl");
48+
setImplementation("org.apache.ibatis.logging.slf4j.Slf4jImpl");
4949
}
5050

5151
public static synchronized void useCommonsLogging() {
52-
setImplementation("org.apache.commons.logging.LogFactory", "org.apache.ibatis.logging.commons.JakartaCommonsLoggingImpl");
52+
setImplementation("org.apache.ibatis.logging.commons.JakartaCommonsLoggingImpl");
5353
}
5454

5555
public static synchronized void useLog4JLogging() {
56-
setImplementation("org.apache.log4j.Logger", "org.apache.ibatis.logging.log4j.Log4jImpl");
56+
setImplementation("org.apache.ibatis.logging.log4j.Log4jImpl");
5757
}
5858

5959
public static synchronized void useJdkLogging() {
60-
setImplementation("java.util.logging.Logger", "org.apache.ibatis.logging.jdk14.Jdk14LoggingImpl");
60+
setImplementation("org.apache.ibatis.logging.jdk14.Jdk14LoggingImpl");
6161
}
6262

6363
public static synchronized void useStdOutLogging() {
@@ -79,15 +79,13 @@ private static void tryImplementation(Runnable runnable) {
7979
}
8080

8181
private static void setImplementation(String implClassName) {
82-
setImplementation(implClassName, implClassName);
83-
}
84-
85-
private static void setImplementation(String testClassName, String implClassName) {
8682
try {
87-
Resources.classForName(testClassName);
8883
@SuppressWarnings("unchecked")
89-
Class<? extends Log> implClass = (Class<Log>) Resources.classForName(implClassName);
90-
logConstructor = implClass.getConstructor(new Class[]{Class.class});
84+
Class<? extends Log> implClass = (Class<? extends Log>) Resources.classForName(implClassName);
85+
Constructor<? extends Log> candidate = implClass.getConstructor(new Class[]{Class.class});
86+
Log log = candidate.newInstance(new Object[]{LogFactory.class});
87+
log.debug("Logging initialized using '" + implClassName + "' adapter.");
88+
logConstructor = candidate;
9189
} catch (Throwable t) {
9290
throw new LogException("Error setting Log implementation. Cause: " + t, t);
9391
}

0 commit comments

Comments
 (0)