Oleg, thanks for the clarification. I originally thought you meant the JMX classes in log4j-core.
I think we may be able to come up with a different solution to (LOG4J2-1226 <https://issues.apache.org/jira/browse/LOG4J2-1226>) that does not involve MarshalledObject in log4j-api. I created https://issues.apache.org/jira/browse/LOG4J2-1926 for this (with you as the reporter). Please feel free to modify that ticket if it is incomplete or incorrect. Remko On Thu, Jun 1, 2017 at 1:57 AM, Oleg Kalnichevski <ol...@apache.org> wrote: > On Thu, 2017-06-01 at 01:18 +0900, Remko Popma wrote: > > Oleg, > > > > Elements in the Log4j configuration can be instrumented with MBeans > > to > > allow remote inspection and modification of an application's logging > > configuration. As Matt pointed out, this can be disabled. > > > > There is no dependency on RMI as far as I know. > > Remko, > > Lint code analyzer used by Android seems to suggest otherwise. > java.rmi.MarshalledObject imported by SortedArrayStringMap does look > like a direct dependency on RMI to me as well. > > > > Was the above a conscious design decision? I did most of the work in > > this > > area and as far as I remember, yes. ;-) > > > > Given we have established that I am not sure what your long term > strategy towards Android is going to be. At the moment adding > transitive dependency on log4j2-api causes any Android build to fail > with a scary invalid package error. Surely this error can be ignored > with a custom lint rule but it may present a certain reason for concert > to less experienced developers. > > > > Not sure what you mean by "heavy". From a user's point of view, more > > functionality is often desirable. From an implementor's point of > > view, care > > was taken to provide abstract implementations that should make it > > relatively easy to provide an alternative implementation of the > > Log4j2 API. > > There is some additional cognitive load because of the richer > > functionality > > but there is enough overlap with other logging frameworks that in > > practice > > I don't think this is a problem for users. > > > > The Message interface is a powerful abstraction that allows users to > > create > > I have nothing against the Message interface as such. I am not not sure > that all of its implementations belong to the facade APIs. That is all. > > Oleg > > > various enhancements without requiring API changes. It is one of the > > things > > that made it possible to make Log4j2 garbage-free in a backwards > > compatible > > manner. Compare for example with the SLF4J API which requires that > > the user > > logs String messages only. I personally think that was a design > > mistake, if > > only for the fact that a String-based API prevents garbage-free > > logging. > > The Message implementations simply cover a range of common use cases. > > > > Remko > > > > > > On Thu, Jun 1, 2017 at 12:10 AM, Oleg Kalnichevski <ol...@apache.org> > > wrote: > > > > > On Wed, 2017-05-31 at 09:30 -0500, Matt Sicker wrote: > > > > The JMX stuff can be disabled, and there are some other similar > > > > optional > > > > dependencies we've had to create due to some previously reported > > > > issues > > > > with missing classes on Android. As for full compatibility, I > > > > don't > > > > think > > > > any of the main developers here have worked on that, but patches > > > > and > > > > other > > > > contributions are welcome! > > > > > > > > > > Matt > > > > > > I am perfectly fine with doing all the necessary leg work but first > > > I > > > need to understand if dependency on RMI and Management APIs was a > > > conscious design decision or it simply happened. > > > > > > After having taken a cursory look at Log4j2 APIs I must admit I am > > > bit > > > unpleasantly surprised at how heavy they feel. For instance, was it > > > really necessary to put all sort of concrete Message > > > implementations > > > into what is meant to be an abstract logging API? > > > > > > Oleg > > > > > > > > > > On 31 May 2017 at 04:54, Oleg Kalnichevski <ol...@apache.org> > > > > wrote: > > > > > > > > > Folks, > > > > > > > > > > I did try to do a reasonable research on the matter prior to > > > > > posting my > > > > > question here, nevertheless, please do excuse me if I am asking > > > > > something obvious or well documented somewhere (in a place I > > > > > was > > > > > unable > > > > > to find). > > > > > > > > > > I read that people had been more or less successfully using > > > > > Log4j2 > > > > > 2.3 > > > > > on Android. > > > > > > > > > > In our case (Apache HttpClient 5.0) when the library gets > > > > > pulled > > > > > into > > > > > an Android project, the Lint static code analyzer reports two > > > > > severe > > > > > violations due to transitive dependency through Log4j APIs 2.8 > > > > > on > > > > > Java > > > > > RMI and Java Management APIs. > > > > > > > > > > My first question is whether or not Log4j2 has been built and > > > > > tested > > > > > for compatibility with Android of any version? > > > > > > > > > > Another question whether or not Logging APIs dependency on on > > > > > Java > > > > > RMI > > > > > and Java Management APIs intentional? > > > > > > > > > > Oleg > > > > > > > > > > > > > > > > > >