On Wed, Apr 14, 2021 at 1:41 AM Matt Sicker <boa...@gmail.com> wrote:
> The picocli reference is likely for type conversion. Possibly removable. > Agreed, yes. Actually, weren't picocli and all CLI tools moved to log4j-tools or log4j-server or something? > On Tue, 13 Apr 2021 at 11:34, Ralph Goers <ralph.go...@dslextreme.com> > wrote: > > > > I just got an email reply to the issue I created for the Disruptor. They > created a release this morning with the automatic module name so I should > be able to pick that up fairly soon. > > > > > /Users/rgoers/projects/apache/logging/log4j/logging-log4j2/log4j-core/src/main/java/org/apache/logging/log4j/core/tools/picocli/CommandLine.java:[41,11] > error: package java.sql is not visible > > > > This indicates java.sql is needed for Picocli. Why? > > > > It seems JNDI is needed for JndiLookup and JndiContextSelector. Those > could be moved to another module if we want. > > > > The Scripting stuff might also be able to moved to a separate module. I > will have to look into that. AbstractConfiguration references the > ScriptManager but that module could be built before core and then could be > optional. > > > > Ralph > > > > > On Apr 13, 2021, at 9:17 AM, Matt Sicker <boa...@gmail.com> wrote: > > > > > > The SQL code is all related to JDBC and related appenders which could > go in > > > their own module. The naming is primarily used for EE stuff which > could all > > > be split out (plus, I don’t think it’s in the default Android variant > of > > > Java). The RMI thing can probably be replaced as you suggested. > > > JMX/management might have some overlap there? As for the beans package, > > > that can also be replaced with code instead of linking in that module. > > > > > > The interesting ones look to be XML and scripting as those are fairly > > > useful core features, but they could be in their own modules. That > would > > > likely leave core such that it only supports programmatic > configuration and > > > properties files since every other format requires additional modules > > > besides base. > > > > > > As for exports, that would likely depend on what’s left in core after > > > splitting out the above mentioned things. > > > > > > On Tue, Apr 13, 2021 at 10:43 Ralph Goers <ralph.go...@dslextreme.com> > > > wrote: > > > > > >> I started doing the work to modularize log4j-core last night. We have > a > > >> blocker in that the disruptor has not had a release in 3 years. They > > >> committed the change to make it an automatic module over a year ago > and > > >> since have fully modularized it. They simply haven’t performed a > release. > > >> > > >> As I was going through the module descriptor (see below) it seems to > me > > >> that we have far more dependencies in core than I would really like. > For > > >> example, despite moving the Jackson Layouts to their own modules we > still > > >> have a dependency on Jackson. We also have dependencies on things like > > >> java.rmi, java.naming, java.sql. I am also not clear on whether they > are > > >> all really optional or not. Ideally, the only required dependency we > should > > >> have is for java.base. For example, we need java.rmi because > Log4jLogEvent > > >> uses MarshalledObject. I have no idea why we need that particular > class to > > >> wrap a log event. Couldn’t we have created our own class for that? We > need > > >> java.desktop because java.beans now lives there. Perhaps we could > look at > > >> what those are and if it is really just one or two utility methods > > >> implement them locally. > > >> > > >> In the meantime I have created an issue with the Disruptor asking for > a > > >> release. I can’t do much more with core until that is available. I > can move > > >> on to other modules. > > >> > > >> We also need to look at the list of exports below and the classes in > them > > >> and determine what is really public and what should be private. > > >> > > >> > > >> Thoughts? > > >> > > >> Ralph > > >> > > >> > > >> module org.apache.logging.log4j.core { > > >> exports org.apache.logging.log4j.core; > > >> exports org.apache.logging.log4j.core.appender; > > >> exports org.apache.logging.log4j.core.appender.db; > > >> exports org.apache.logging.log4j.core.appender.nosql; > > >> exports org.apache.logging.log4j.core.appender.rewrite; > > >> exports org.apache.logging.log4j.core.appender.rolling; > > >> exports org.apache.logging.log4j.core.appender.rolling.action; > > >> exports org.apache.logging.log4j.core.appender.routing; > > >> exports org.apache.logging.log4j.core.async; > > >> exports org.apache.logging.log4j.core.config; > > >> exports org.apache.logging.log4j.core.config.arbiters; > > >> exports org.apache.logging.log4j.core.config.builder.api; > > >> exports org.apache.logging.log4j.core.config.builder.impl; > > >> exports org.apache.logging.log4j.core.config.composite; > > >> exports org.apache.logging.log4j.core.config.json; > > >> exports org.apache.logging.log4j.core.config.plugins; > > >> exports org.apache.logging.log4j.core.config.plugins.convert; > > >> exports org.apache.logging.log4j.core.config.plugins.inject; > > >> exports org.apache.logging.log4j.core.config.plugins.util; > > >> exports org.apache.logging.log4j.core.config.plugins.visitors; > > >> exports org.apache.logging.log4j.core.config.properties; > > >> exports org.apache.logging.log4j.core.config.status; > > >> exports org.apache.logging.log4j.core.config.xml; > > >> exports org.apache.logging.log4j.core.config.yaml; > > >> exports org.apache.logging.log4j.core.filter; > > >> exports org.apache.logging.log4j.core.impl; > > >> exports org.apache.logging.log4j.core.jmx; > > >> exports org.apache.logging.log4j.core.layout; > > >> exports org.apache.logging.log4j.core.lookup; > > >> exports org.apache.logging.log4j.core.message; > > >> exports org.apache.logging.log4j.core.net; > > >> exports org.apache.logging.log4j.core.net.ssl; > > >> exports org.apache.logging.log4j.core.osgi; > > >> exports org.apache.logging.log4j.core.parser; > > >> exports org.apache.logging.log4j.core.pattern; > > >> exports org.apache.logging.log4j.core.script; > > >> exports org.apache.logging.log4j.core.selector; > > >> exports org.apache.logging.log4j.core.time; > > >> exports org.apache.logging.log4j.core.tools; > > >> exports org.apache.logging.log4j.core.tools.picocli; > > >> exports org.apache.logging.log4j.core.util; > > >> exports org.apache.logging.log4j.core.util.datetime; > > >> > > >> requires transitive java.desktop; > > >> requires transitive java.management; > > >> requires java.naming; > > >> requires transitive java.sql; > > >> requires java.rmi; > > >> requires transitive java.scripting; > > >> requires java.xml; > > >> requires org.apache.logging.log4j; > > >> requires org.apache.logging.log4j.plugins; > > >> //requires transitive com.lmax.distruptor; > > >> requires transitive org.osgi.core; > > >> requires transitive com.conversantmedia.disruptor; > > >> requires transitive com.fasterxml.jackson.core; > > >> requires transitive com.fasterxml.jackson.databind; > > >> requires transitive com.fasterxml.jackson.dataformat.xml; > > >> requires transitive com.fasterxml.jackson.dataformat.yaml; > > >> requires transitive org.apache.commons.compress; > > >> requires transitive org.fusesource.jansi; > > >> uses org.apache.logging.log4j.core.util.ContextDataProvider; > > >> provides > > >> org.apache.logging.log4j.message.ThreadDumpMessage$ThreadInfoFactory > with > > >> org.apache.logging.log4j.core.message.ExtendedThreadInfoFactory; > > >> provides org.apache.logging.log4j.core.util.ContextDataProvider > with > > >> org.apache.logging.log4j.core.impl.ThreadContextDataProvider; > > >> provides org.apache.logging.log4j.spi.Provider with > > >> org.apache.logging.log4j.core.impl.Log4jProvider; > > >> provides org.apache.logging.log4j.plugins.processor.PluginService > with > > >> org.apache.logging.log4j.core.plugins.Log4jPlugins; > > >> > > >> > > > > >