]
Nicholas Williams commented on JBLOGGING-94:
--------------------------------------------
I took a look at the JBoss Logging code and determined that it COULD be improved by
dedicated Log4j 2 support. It would improve performance (however minor) over supporting
Log4j 2 indirectly via the bridge API, which this change too.
I'll file a separate issue for the improvement and try to submit a pull request for a
new Logger/LoggerProvider in the next few weeks.
JBoss Logging does not detect log4j 2.0
---------------------------------------
Key: JBLOGGING-94
URL:
https://issues.jboss.org/browse/JBLOGGING-94
Project: JBoss Logging
Issue Type: Bug
Security Level: Public(Everyone can see)
Components: jboss-logging-log4j
Affects Versions: 3.1.2.GA
Environment: Hibernate
Reporter: Henry Clout
Assignee: James Perkins
The class org.jboss.logging.LoggerProviders checks for the presence of log4j using the
code:
{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();
}
{code}
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:
{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.config.PropertySetter", true, cl);
return new Log4jLoggerProvider();
}
{code}
And indeed I started receiving logging messages from Hibernate (via JBoss logging.)
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: