[jboss-jira] [JBoss JIRA] (JBLOGGING-94) JBoss Logging does not detect log4j 2.0

Nicholas Williams (JIRA) jira-events at lists.jboss.org
Fri Jun 7 11:53:55 EDT 2013


    [ https://issues.jboss.org/browse/JBLOGGING-94?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12780273#comment-12780273 ] 

Nicholas Williams commented on JBLOGGING-94:
--------------------------------------------

Yes, 3.1.3.GA is still marked as unreleased in JIRA (https://issues.jboss.org/browse/JBLOGGING/fixforversion/12319898), which is incorrect because it was released on March 5 (http://search.maven.org/#artifactdetails%7Corg.jboss.logging%7Cjboss-logging%7C3.1.3.GA%7Cjar).

Someone needs to go in and marked it as released and then add a 3.1.4.GA.
                
> 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
>             Fix For: 3.2.0.Beta1
>
>
> 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: http://www.atlassian.com/software/jira


More information about the jboss-jira mailing list