-
Bug
-
Resolution: Done
-
Major
-
3.1.2.GA
-
None
The class org.jboss.logging.LoggerProviders checks for the presence of log4j using the code:
private static LoggerProvider tryLog4j(final ClassLoader cl) throws ClassNotFoundException { Class.forName("org.apache.log4j.LogManager", true, cl); // JBLOGGING-65 - slf4j can disguise itself as log4j. Test for a class that slf4j doesn't provide. Class.forName("org.apache.log4j.Hierarchy", true, cl); return new Log4jLoggerProvider(); }
However, despite having the log4j-1.2-api-2.0.jar bridge included, this fails as the class org.apache.log4j.Hierarchy is not present in log4j 2.0.
I worked around this by forcing JBoss logging to use slf4j (which is then proxied to log4j) by setting the -Dorg.jboss.logging.provider=slf4j option.
As a proper fix, however, how about checking for a class that is included in log4j 1.2, 2.0 but not slf4j? org.apache.log4j.config.PropertySetter seems to tick the box.
I tested changing the afore mentioned method to:
private static LoggerProvider tryLog4j(final ClassLoader cl) throws ClassNotFoundException { Class.forName("org.apache.log4j.LogManager", true, cl); // JBLOGGING-65 - slf4j can disguise itself as log4j. Test for a class that slf4j doesn't provide. Class.forName("org.apache.log4j.config.PropertySetter", true, cl); return new Log4jLoggerProvider(); }
And indeed I started receiving logging messages from Hibernate (via JBoss logging.)
- blocks
-
ISPN-3076 Infinispan should enable use of log4j2
- Closed
- is related to
-
JBLOGGING-95 Add Logger/LoggerProvider to support new Log4j 2 to improve performance
- Resolved