[ https://issues.apache.org/jira/browse/LOG4J2-3601?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17607291#comment-17607291 ]
Ralph Goers edited comment on LOG4J2-3601 at 9/20/22 4:21 PM: -------------------------------------------------------------- I was incorrect when I looked at Log4jLoggerFactory. log4j-slf4j2-impl has no dependency in the code on log4j-core. So adding the log4j-core dependency makes it difficult to use the SLF4J2 binding with any other implementation of the Log4j API. From a technical perspective the test scope is correct since the binding is validated with log4j-core. Unfortunately, AFAIK Maven/Gradle don't provide a way to specify a default dependency. If there was a way to do that we certainly would take advantage of that. Unfortunately, some of our other bindings do require log4j-core. To be honest, this really could be converted into a bug report that log4j-slf4j-impl has a runtime dependency on log4j-core when it should not. was (Author: ralph.go...@dslextreme.com): I was incorrect when I looked at Log4jLoggerFactory. log4j-slf4j2-impl has no dependency in the code on log4j-core. So adding the log4j-core dependency makes it difficult to use the SLF4J2 binding with any other implementation of the Log4j API. From a technical perspective the test scope is correct since the binding is validated with log4j-core. Unfortunately, AFAIK Maven/Gradle don't provide a way to specify a default dependency. If there was a way to do that we certainly would take advantage of that. Unfortunately, some of our other bindings do require log4j-core. > log4j-slf4j2: change of dependency scope for log4j-core > ------------------------------------------------------- > > Key: LOG4J2-3601 > URL: https://issues.apache.org/jira/browse/LOG4J2-3601 > Project: Log4j 2 > Issue Type: Improvement > Components: SLF4J Bridge > Affects Versions: 2.19.0 > Reporter: Andy Seaborne > Priority: Major > > The artifact {{log4j-slf4j-impl}} has a scope=runtime dependency on > log4j-core. {{log4j-slf4j18-impl}} similarly had scope=runtime. > The artifact {{log4j-slf4j2-impl}} has a scope=test dependency on log4j-core. > This changed as part of [commit > 8f63620875|https://github.com/apache/logging-log4j2/pull/1024/files#diff-d3ba9956a9f81420d0be3d69477a05b505746272d548ab17404aa47f3e5946b0] > although it seems to be unrelated. > It makes switching over more of a bump. Previously just depending on > {{log4j-slf4j-impl}} was enough. > Please switch back to a scope=runtime dependency for {{log4j-slf4j2-impl}}. > Example: we (Apache Jena) use slf4j in the main code base, and select log4j > when it needed for binaries tests so we have multiple places where the > dependency happens. We can change - but this may be a user experience for > others as well. > {noformat} > [INFO] +- org.apache.logging.log4j:log4j-slf4j-impl:jar:2.18.0:compile > [INFO] | +- org.apache.logging.log4j:log4j-api:jar:2.18.0:compile > [INFO] | \- org.apache.logging.log4j:log4j-core:jar:2.18.0:runtime > {noformat} > {noformat} > [INFO] +- org.apache.logging.log4j:log4j-slf4j2-impl:jar:2.19.0:compile > [INFO] | \- org.apache.logging.log4j:log4j-api:jar:2.19.0:compile > {noformat} > -- This message was sent by Atlassian Jira (v8.20.10#820010)