[ https://issues.apache.org/jira/browse/LOG4J2-3601?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17607371#comment-17607371 ]
Andy Seaborne edited comment on LOG4J2-3601 at 9/20/22 7:18 PM: ---------------------------------------------------------------- We have the internal (clean separation of api, core and impl) and external (user expectation of an implementation of slf4j using log4j). The page [https://logging.apache.org/log4j/2.x/log4j-slf4j2-impl/index.html] does not mention log4j-core. It does refer to "the log4j jars". Links from the requirements section on that page go to: [https://logging.apache.org/log4j/2.x/runtime-dependencies.html] which gets you to [https://logging.apache.org/log4j/2.x/log4j-slf4j-impl/dependencies.html#Dependency_Tree] (there is no slf4j2 link) where log4j-core is a runtime dependency. So there is a history of users (if they read the documentation :)) having a single dependency way to use log4j to provide the logging for slf4j. With scope=runtime, there is the same degree of compile separation from log4j-core as scope=test. Exclusion of log4j-core will work. was (Author: andy.seaborne): We have the internal (clean separation of api, core and impl) and external (user expectation of an implementation of slf4j using log4j). The page [https://logging.apache.org/log4j/2.x/log4j-slf4j2-impl/index.html] does not mention log4j-core. It does refer to "the log4j jars". Links from the requirements section on that page go to: [https://logging.apache.org/log4j/2.x/runtime-dependencies.html] which gets you to [https://logging.apache.org/log4j/2.x/log4j-slf4j-impl/dependencies.html#Dependency_Tree] (there is no slf4j2 link) where log4j-core is a runtime dependency. So there is a history of users (if they read the documentation :)) having a single dependency way to use log4j to provide the logging for slf4j. With scope=runtime, there is the same degree of compile separation from log4j-core as scope=test. > 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)