[ https://issues.apache.org/jira/browse/LOG4J2-2056?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16202771#comment-16202771 ]
Ralph Goers commented on LOG4J2-2056: ------------------------------------- What you described is pretty much how Log4j already works. The Log4j API already binds to its implementation via the ServiceLoader. This is a bit of a pain in OSGi but we got it to work. Because the Log4j API and implementation are currently automatic modules we don't really care what the module names of the implementations are. Starting with release 1.8, SLF4J also uses the ServiceLoader. It's module-info.java file contains {code} module org.slf4j { exports org.slf4j; exports org.slf4j.spi; exports org.slf4j.event; exports org.slf4j.helpers; uses org.slf4j.spi.SLF4JServiceProvider; } {code} It seems to me that nothing in there requires a specific module name for the implementation so I am not sure that we do either. FWIW, ServiceLoader doesn't preclude having multiple implementations. > Modularize Log4j as automatic modules > ------------------------------------- > > Key: LOG4J2-2056 > URL: https://issues.apache.org/jira/browse/LOG4J2-2056 > Project: Log4j 2 > Issue Type: New Feature > Affects Versions: 2.9.1 > Reporter: Ralph Goers > Assignee: Ralph Goers > > To fully support Java 9 all Log4j jars must (at least) be packaged as > automatic modules. We should, as much as possible, follow the recommendations > at http://blog.joda.org/2017/05/java-se-9-jpms-automatic-modules.html. Given > that the module names would be: > ||Artifact ID ||Module name|| > |log4j-api|org.apache.logging.log4j| > |log4j-core|org.apache.logging.log4j.core| > |log4j-1.2-api|org.apache.log4j| > |log4j-appserver|org.apache.logging.log4j.appserver| > |log4j-flume-ng|org.apache.logging.log4j.flume| > |log4j-iostreams|org.apache.logging.log4j.iostreams| > |log4j-jcl|org.apache.logging.log4j.jcl| > |log4j-jmx-gui|org.apache.logging.log4j.jmx.gui| > |log4j-jul|org.apache.logging.log4j.jul| > |log4j-nosql|org.apache.logging.log4j.nosql| > |log4j-osgi|org.apache.logging.log4j.osgi| > |log4j-sl4j-impl|org.apache.logging.log4j.slf4j.impl*| > |log4j-to-slf4j|org.apache.logging.log4j.to.slf4j| > |log4j-taglib|org.apache.logging.log4j.taglib| > |log4j-web|org.apache.logging.log4j.web| > # log4j-liquibase uses a package name outside the org.apache.logging.log4j > namespace so is not modularized. > # log4j-slf4j-impl cannot currently be modularized until the binding is > modified. It cannot have classes in the org.slf4j namespace. > # log4j-slf4j-impl and log4j-to-slf4j both use the same package name - > org.apache.logging.log4j.slf4j. This will remain the same as it will prevent > them both from being loaded at the same time. -- This message was sent by Atlassian JIRA (v6.4.14#64029)