[ 
https://issues.apache.org/jira/browse/LOGGING-172?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

RENJITH ALEXANDER updated LOGGING-172:
--------------------------------------
    Priority: Major  (was: Minor)

> Disparity in exception handling of logger factory creation, causing failure 
> in some cases.
> ------------------------------------------------------------------------------------------
>
>                 Key: LOGGING-172
>                 URL: https://issues.apache.org/jira/browse/LOGGING-172
>             Project: Commons Logging
>          Issue Type: Bug
>    Affects Versions: 1.2
>            Reporter: RENJITH ALEXANDER
>            Priority: Major
>
> The following is the way the log factory instance is created in 
> org.apache.commons.logging.LogFactory.getFactory implementation:
> 1.0 Check if the log factory for the current context class loader is 
> available in the cache.
>     1.1 If found, return it.
>     1.2 If not found, continue to step 2.0
> 2.0 See if there is a factory provider registered via system property 
> "org.apache.commons.logging.LogFactory", and try to load that class.
>     2.1 If no such system property found, go to step 3.0
>     2.2 If successfully loaded return an instance of the class, after adding 
> it to cache.
>     2.3 If there is a security exception while doing this, continue to step 
> 3.0.
>     2.4 If there is ANY OTHER exception, RETHROW it.
> 3.0 See if there is a resource under the context class loader path 
> "META-INF/services/org.apache.commons.logging.LogFactory", and try to load 
> the class.
>     3.1 If no such file found, go to step 4.0
>     3.2 If successfully loaded return an instance of the class, after adding 
> it to cache.
>     3.3 If there is ANY exception, got to step 4.0.
> 4.0 Load the provider class(read during steps 2.0 or 3.0, or the default 
> provider if none read) with the current context class loader, cache it and 
> return it.
>  
> Since the exception handling in 2.0 is different from exception handling in 
> 3.0, a class cast exception in 3.3 will cause 4.0 to be executed, returning a 
> logger factory successfully, while the same exception in 2.4 causes an 
> exception to be thrown back, and no logger factory being created.
> The ideal scenario should be that, the exception handling should be identical 
> in both cases,  the fall back mechanism(4.0) should be executed in both cases 
> to return a logger factory instance successfully.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to