geode-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF subversion and git services (Jira)" <j...@apache.org>
Subject [jira] [Commented] (GEODE-7050) Log4jAgent should avoid casting non-log4j loggers
Date Tue, 20 Aug 2019 19:07:01 GMT

    [ https://issues.apache.org/jira/browse/GEODE-7050?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16911674#comment-16911674
] 

ASF subversion and git services commented on GEODE-7050:
--------------------------------------------------------

Commit 50b31715355f65b61fd5a6f14dcad942f46afcfe in geode's branch refs/heads/release/1.9.1
from Kirk Lund
[ https://gitbox.apache.org/repos/asf?p=geode.git;h=50b3171 ]

GEODE-7050: Use Log4jAgent only if Log4j is using Log4jProvider (#3892)

* GEODE-7050: Use Log4jAgent only if Log4j is using Log4jProvider

This change prevents Geode from using Log4jAgent if Log4j Core is
present but not using Log4jProvider.

For example, Log4j Core uses SLF4JProvider when log4j-to-slf4j is in
the classpath.

By disabling Log4jAgent when other Log4j Providers are in use, this
prevents problems such as ClassCastExceptions when attemping to cast
loggers from org.apache.logging.slf4j.SLF4JLogger to
org.apache.logging.log4j.core.Logger to get the LoggerConfig or
LoggerContext.

* Update geode-core/src/test/java/org/apache/geode/internal/logging/DefaultProviderCheckerTest.java

Co-Authored-By: Aaron Lindsey <alindsey@pivotal.io>
(cherry picked from commit e5c9c420f462149fd062847904e3435fbe99afb4)


> Log4jAgent should avoid casting non-log4j loggers
> -------------------------------------------------
>
>                 Key: GEODE-7050
>                 URL: https://issues.apache.org/jira/browse/GEODE-7050
>             Project: Geode
>          Issue Type: Bug
>          Components: logging
>    Affects Versions: 1.9.0, 1.10.0
>            Reporter: Kirk Lund
>            Assignee: Kirk Lund
>            Priority: Major
>             Fix For: 1.10.0
>
>          Time Spent: 50m
>  Remaining Estimate: 0h
>
> Users should be able to use SLF4J API with Geode even when log4j-core is in the class
path and the Geode log4j appenders are being used.
> Log4jAgent assumes that all Loggers are Log4J loggers. This can result in a ClassCastException
when encountering an instance of SLF4JLogger.
> {noformat}
> Caused by: java.lang.ClassCastException: org.apache.logging.slf4j.SLF4JLogger cannot
be cast to org.apache.logging.log4j.core.Logger
> 	at org.apache.geode.internal.logging.log4j.Log4jAgent.getRootLoggerContext(Log4jAgent.java:91)
> 	at org.apache.geode.internal.logging.log4j.Log4jAgent.getConfiguration(Log4jAgent.java:95)
> 	at org.apache.geode.internal.logging.log4j.Log4jAgent.isUsingGemFireDefaultConfig(Log4jAgent.java:80)
> 	at org.apache.geode.internal.logging.log4j.Log4jAgent.shouldUpdateLogLevels(Log4jAgent.java:129)
> 	at org.apache.geode.internal.logging.log4j.Log4jAgent.configure(Log4jAgent.java:107)
> 	at org.apache.geode.internal.logging.Configuration.configChanged(Configuration.java:152)
> 	at org.apache.geode.internal.logging.Configuration.initialize(Configuration.java:141)
> 	at org.apache.geode.internal.logging.LoggingSession.createSession(LoggingSession.java:65)
> 	at org.apache.geode.distributed.internal.InternalDistributedSystem.initialize(InternalDistributedSystem.java:762)
> 	at org.apache.geode.distributed.internal.InternalDistributedSystem.newInstance(InternalDistributedSystem.java:446)
> 	at org.apache.geode.distributed.internal.InternalDistributedSystem.newInstance(InternalDistributedSystem.java:432)
> 	at org.apache.geode.distributed.internal.InternalDistributedSystem.connectInternal(InternalDistributedSystem.java:257)
> 	at org.apache.geode.distributed.DistributedSystem.connect(DistributedSystem.java:164)
> 	at org.apache.geode.cache.client.ClientCacheFactory.basicCreate(ClientCacheFactory.java:243)
> 	at org.apache.geode.cache.client.ClientCacheFactory.create(ClientCacheFactory.java:214)
> 	at org.springframework.data.gemfire.client.ClientCacheFactoryBean.createCache(ClientCacheFactoryBean.java:391)
> 	at org.springframework.data.gemfire.CacheFactoryBean.resolveCache(CacheFactoryBean.java:325)
> 	at org.springframework.data.gemfire.CacheFactoryBean.init(CacheFactoryBean.java:269)
> 	... 107 more
> {noformat}



--
This message was sent by Atlassian Jira
(v8.3.2#803003)

Mime
View raw message