Michael Sutherland created LOG4J2-862:
-----------------------------------------

             Summary: Misleading error message "Log4j2 could not find a logging 
implementation. Please add log4j-core to the classpath."
                 Key: LOG4J2-862
                 URL: https://issues.apache.org/jira/browse/LOG4J2-862
             Project: Log4j 2
          Issue Type: Bug
          Components: Configurators
    Affects Versions: 2.0.2
            Reporter: Michael Sutherland


In the code out put I see
"ERROR StatusLogger Log4j2 could not find a logging implementation. Please add 
log4j-core to the classpath. Using SimpleLogger to log to the console..." 
followed by "java.lang.ClassCastException: 
org.apache.logging.log4j.simple.SimpleLoggerContext cannot be cast to 
org.apache.logging.log4j.core.LoggerContext" which means core must be on the 
class path as otherwise you couldn't get that class cast execption. At which 
point the application using Log4j2 fails to start. 

The underlying problem is org.apache.logging.log4j.LogManager assuming if 
org.apache.logging.log4j.util.ProviderUtil returns false for hasProviders it is 
because core is not on the classpath. In practice I've found that hasProviders 
can return false because ProviderUtil is using a different Classloader than the 
rest of the application. It cannot find the 
"META-INF/log4j-provider.properties" resource but it is on the class path.

I think there is a problem with the logic of how the classloaders are chosen 
but I don't understand what Log4j is trying to do here, however I am sure the 
error message is confusing and misleading




--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to