logging-log4j-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Nick Williams (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (LOG4J2-230) Preempt StackOverflowEx when both slf4j-impl jar and log4j-to-slf4j jar are on the classpath
Date Thu, 02 May 2013 13:04:15 GMT

    [ https://issues.apache.org/jira/browse/LOG4J2-230?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13647495#comment-13647495

Nick Williams commented on LOG4J2-230:

If NoClassDefFoundError is found here, it should not be caught. It should be allowed to propagate.

ClassNotFoundException: Thrown when code attempts to load a class via reflection. This is
a checked exception, because the code loading the class could not be checked by the compiler,
so it must be checked at runtime.

NoClassDefFoundError: This is thrown when code that WAS checked by the compiler fails to load
at runtime. This happens when a class that was successfully linked at compile time cannot
be located on the class path. For example:

public class Animal {
    public Fur fur;

If Fur cannot be loaded here, a NoClassDefFoundError is thrown. Fur, in this case, was linked
at compile time, but that linkage broke at runtime.

If Class.forName() throws a NoClassDefFoundError in this case, it could be while loading that
class, OR it could be some other major problem with the JRE class path. Importantly, IF NoClassDefFoundError
is thrown while loading Log4JLoggerFactory, that means Log4JLoggerFactory WAS found, but one
of its references was not found. In this situation you SHOULD still throw an exception, because
Log4JLoggerFactory was found and should not have been. However, your catching Throwable will
suppress that exception. IMO, this seems incorrect. Log4JLoggerFactory should just be allowed
to propagate.

I really think ONLY ClassNotFoundException should be caught here. Any other exceptions should
be allowed to propagate.
> Preempt StackOverflowEx when both slf4j-impl jar and log4j-to-slf4j jar are on the classpath
> --------------------------------------------------------------------------------------------
>                 Key: LOG4J2-230
>                 URL: https://issues.apache.org/jira/browse/LOG4J2-230
>             Project: Log4j 2
>          Issue Type: Improvement
>          Components: SLF4J Bridge
>    Affects Versions: 2.0-beta5
>            Reporter: Remko Popma
> This ticket is to prevent issues like LOG4J2-204.
> Aiming for something similar to what is documented here:
> http://www.slf4j.org/codes.html#jclDelegationLoop

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

To unsubscribe, e-mail: log4j-dev-unsubscribe@logging.apache.org
For additional commands, e-mail: log4j-dev-help@logging.apache.org

View raw message