On Wed, Dec 30, 2020 at 6:50 PM Ralph Goers <ralph.go...@dslextreme.com>
wrote:

> I should add that I am fine with getting rid of "2" interfaces that are
> only used by users who are implementing their own customizations. We can
> document that. I'm also ok with getting rid of Supplier if we can show that
> no code change or compilation is required. I don't know if that is true
> with Lambdas.
>

Hi All,

> "no code change or compilation is required."
That sounds like a fantasy ;-) since we've already broken source and binary
compatibility in log4j-api with 2.x by removing deprecated methods, so
we're already in jar hell territory. So removing our custom Supplier and
folder "2" types should also be ok.

mvn revapi:check -pl log4j-api -Drevapi.skip=false

says:

[ERROR] java.method.removed: method void
org.apache.logging.log4j.Logger::entry(): Method was removed.
[ERROR] java.method.removed: method void
org.apache.logging.log4j.Logger::entry(java.lang.Object[]): Method was
removed.
[ERROR] java.method.removed: method void
org.apache.logging.log4j.Logger::exit(): Method was removed.
[ERROR] java.method.removed: method <R> R
org.apache.logging.log4j.Logger::exit(R): Method was removed.
[ERROR] java.method.removed: method org.apache.logging.log4j.Marker
org.apache.logging.log4j.MarkerManager::getMarker(java.lang.String,
java.lang.String): Method was removed.
[ERROR] java.method.removed: method org.apache.logging.log4j.Marker
org.apache.logging.log4j.MarkerManager::getMarker(java.lang.String,
org.apache.logging.log4j.Marker): Method was removed.
[ERROR] java.class.noLongerInheritsFromClass: class
org.apache.logging.log4j.message.FormattedMessageFactory: Class no longer
inherits from 'org.apache.logging.log4j.message.AbstractMessageFactory'.
[ERROR] java.class.noLongerInheritsFromClass: class
org.apache.logging.log4j.message.LocalizedMessageFactory: Class no longer
inherits from 'org.apache.logging.log4j.message.AbstractMessageFactory'.
[ERROR] java.class.noLongerInheritsFromClass: class
org.apache.logging.log4j.message.MessageFormatMessageFactory: Class no
longer inherits from
'org.apache.logging.log4j.message.AbstractMessageFactory'.
[ERROR] java.method.removed: method void
org.apache.logging.log4j.message.ParameterizedMessage::<init>(java.lang.String,
java.lang.String[], java.lang.Throwable): Method was removed.
[ERROR] java.class.noLongerInheritsFromClass: class
org.apache.logging.log4j.message.ParameterizedMessageFactory: Class no
longer inherits from
'org.apache.logging.log4j.message.AbstractMessageFactory'.
[ERROR] java.class.noLongerInheritsFromClass: class
org.apache.logging.log4j.message.ParameterizedNoReferenceMessageFactory:
Class no longer inherits from
'org.apache.logging.log4j.message.AbstractMessageFactory'.
[ERROR] java.class.noLongerInheritsFromClass: class
org.apache.logging.log4j.message.SimpleMessageFactory: Class no longer
inherits from 'org.apache.logging.log4j.message.AbstractMessageFactory'.
[ERROR] java.class.noLongerInheritsFromClass: class
org.apache.logging.log4j.message.StringFormatterMessageFactory: Class no
longer inherits from
'org.apache.logging.log4j.message.AbstractMessageFactory'.
[ERROR] java.class.noLongerImplementsInterface: class
org.apache.logging.log4j.simple.SimpleLogger: Class no longer implements
interface 'org.apache.logging.log4j.spi.LocationAwareLogger'.
[ERROR] java.field.serialVersionUIDUnchanged: field
org.apache.logging.log4j.spi.AbstractLogger.serialVersionUID: The class
changed in an incompatible way with regards to serialization but the
serialVersionUID field stayed unchanged. This might be ok and/or desired
but is suspicious.
[ERROR] java.method.removed: method
org.apache.logging.log4j.message.EntryMessage
org.apache.logging.log4j.spi.AbstractLogger::enter(java.lang.String,
org.apache.logging.log4j.util.MessageSupplier): Method was removed.
[ERROR] java.method.removed: method
org.apache.logging.log4j.message.EntryMessage
org.apache.logging.log4j.spi.AbstractLogger::enter(java.lang.String,
java.lang.String, org.apache.logging.log4j.util.MessageSupplier[]): Method
was removed.
[ERROR] java.method.removed: method void
org.apache.logging.log4j.spi.AbstractLogger::entry(): Method was removed.
[ERROR] java.method.removed: method void
org.apache.logging.log4j.spi.AbstractLogger::entry(java.lang.Object[]):
Method was removed.
[ERROR] java.method.removed: method void
org.apache.logging.log4j.spi.AbstractLogger::exit(): Method was removed.
[ERROR] java.method.removed: method <R> R
org.apache.logging.log4j.spi.AbstractLogger::exit(R): Method was removed.
[ERROR] java.class.noLongerImplementsInterface: class
org.apache.logging.log4j.spi.AbstractLogger: Class no longer implements
interface 'org.apache.logging.log4j.spi.LocationAwareLogger'.
[ERROR] java.class.noLongerImplementsInterface: class
org.apache.logging.log4j.spi.ExtendedLoggerWrapper: Class no longer
implements interface 'org.apache.logging.log4j.spi.LocationAwareLogger'.
[ERROR] java.class.removed: interface
org.apache.logging.log4j.spi.LocationAwareLogger: Class was removed.
[ERROR] java.class.removed: class
org.apache.logging.log4j.spi.LoggerContextKey: Class was removed.
[ERROR] java.class.removed: class
org.apache.logging.log4j.spi.MessageFactory2Adapter: Class was removed.
[ERROR] java.class.noLongerImplementsInterface: class
org.apache.logging.log4j.status.StatusLogger: Class no longer implements
interface 'org.apache.logging.log4j.spi.LocationAwareLogger'.
[ERROR] java.class.removed: class org.apache.logging.log4j.util.Base64Util:
Class was removed.
[ERROR] java.class.removed: class
org.apache.logging.log4j.util.ProcessIdUtil: Class was removed.
[ERROR] java.method.removed: method void
org.apache.logging.log4j.util.ProviderUtil::loadProviders(java.util.Enumeration<java.net.URL>,
java.lang.ClassLoader): Method was removed.
[ERROR] java.annotation.added: interface org.osgi.framework.Bundle: Element
newly annotated with 'org.osgi.annotation.versioning.ProviderType'.
[org.osgi:org.osgi.core:jar:6.0.0]
[ERROR] java.method.addedToInterface: method <S>
org.osgi.framework.ServiceObjects<S>
org.osgi.framework.BundleContext::getServiceObjects(org.osgi.framework.ServiceReference<S>):
Method was added to an interface. [org.osgi:org.osgi.core:jar:6.0.0]
[ERROR] java.method.addedToInterface: method <S>
org.osgi.framework.ServiceRegistration<S>
org.osgi.framework.BundleContext::registerService(java.lang.Class<S>,
org.osgi.framework.ServiceFactory<S>,
java.util.Dictionary<java.lang.String, ?>): Method was added to an
interface. [org.osgi:org.osgi.core:jar:6.0.0]
[ERROR] java.annotation.added: interface org.osgi.framework.BundleContext:
Element newly annotated with 'org.osgi.annotation.versioning.ProviderType'.
[org.osgi:org.osgi.core:jar:6.0.0]
[ERROR] java.annotation.added: interface org.osgi.framework.BundleListener:
Element newly annotated with 'org.osgi.annotation.versioning.ConsumerType'.
[org.osgi:org.osgi.core:jar:6.0.0]
[ERROR] java.annotation.added: interface org.osgi.framework.Filter: Element
newly annotated with 'org.osgi.annotation.versioning.ProviderType'.
[org.osgi:org.osgi.core:jar:6.0.0]
[ERROR] java.annotation.added: interface
org.osgi.framework.FrameworkListener: Element newly annotated with
'org.osgi.annotation.versioning.ConsumerType'.
[org.osgi:org.osgi.core:jar:6.0.0]
[ERROR] java.class.externalClassExposedInAPI: interface
org.osgi.framework.ServiceFactory<S>: A class from supplementary archives
is used in a public capacity in the API. [org.osgi:org.osgi.core:jar:6.0.0]
[ERROR] java.annotation.added: interface
org.osgi.framework.ServiceListener: Element newly annotated with
'org.osgi.annotation.versioning.ConsumerType'.
[org.osgi:org.osgi.core:jar:6.0.0]
[ERROR] java.class.externalClassExposedInAPI: interface
org.osgi.framework.ServiceObjects<S>: A class from supplementary archives
is used in a public capacity in the API. [org.osgi:org.osgi.core:jar:6.0.0]
[ERROR] java.annotation.added: interface
org.osgi.framework.ServiceReference<S>: Element newly annotated with
'org.osgi.annotation.versioning.ProviderType'.
[org.osgi:org.osgi.core:jar:6.0.0]
[ERROR] java.annotation.added: interface
org.osgi.framework.ServiceRegistration<S>: Element newly annotated with
'org.osgi.annotation.versioning.ProviderType'.
[org.osgi:org.osgi.core:jar:6.0.0]

Gary


>
> Ralph
>
> ----- Original Message -----
> From: "ralph.goers @dslextreme.com" <ralph.go...@dslextreme.com>
> To: dev@logging.apache.org
> Sent: Wednesday, December 30, 2020 4:42:19 PM
> Subject: Re: Deleting log4j-layout-jackson* modules from master
>
> Changing package names would require every user of the Log4j API to have
> to change their code. We are not going to do that to our users. That is one
> of the reasons folks have stuck with Log4j 1.x for so long. I would be -1
> on any changes that require that.
>
> Ralph
>
> > On Dec 30, 2020, at 2:47 PM, Gary Gregory <garydgreg...@gmail.com>
> wrote:
> >
> > Well. we should clean up our APIs now that we are on Java 8 and probably
> > 11. For example, delete org.apache.logging.log4j.util.Supplier and use
> > java.util.function.Supplier. Fold all interfaces and classes postfixed
> with
> > "2" into their superclass. All of this will break BC which is what a
> major
> > version change allows us to do. All of this means a new package name and
> > Maven coordinates to avoid jar hell.
> >
> > Gary
> >
> > On Wed, Dec 30, 2020 at 4:01 PM Ralph Goers <ralph.go...@dslextreme.com>
> > wrote:
> >
> >> We would only need to do that if the versions are incompatible. Maven
> >> won’t let you have two versions of log4j-api or log4j-core.
> >>
> >> Ralph
> >>
> >>> On Dec 30, 2020, at 1:02 PM, Gary Gregory <garydgreg...@gmail.com>
> >> wrote:
> >>>
> >>> Another thing for 3.0 is when to change the package name so you can
> have
> >>> 2.x and 3.x in the same class loader without things blowing left and
> >> right.
> >>> Just like you can have 1.x and 2.x at the same time.
> >>>
> >>> Gary
> >>>
> >>> On Wed, Dec 30, 2020, 14:47 Ralph Goers <ralph.go...@dslextreme.com>
> >> wrote:
> >>>
> >>>> If we are going to deprecate them we need to announce that in the next
> >>>> release.  I know JSONLayout is being used because we have people
> >> complain
> >>>> about it. If we do that we should have at least 6 months before 3.0 is
> >>>> released and 2.x and 3.0 are going to both be active for a while.
> >>>>
> >>>>
> >>>> Ralph
> >>>>
> >>>>> On Dec 30, 2020, at 12:30 PM, Volkan Yazıcı <volkan.yaz...@gmail.com
> >
> >>>> wrote:
> >>>>>
> >>>>> My motivation for dropping these modules are not merely due to the
> new
> >>>>> JsonTemplateLayout, though rather reducing the maintenance burden. I
> >>>>> "hypothesise" they are not used. For one, I cannot imagine a single
> use
> >>>>> case for YAML layout. Second, AbstractJacksonLayout renders stack
> >> traces
> >>>> in
> >>>>> a nested fashion — i.e., nested objects for JsonLayout, nested XML
> >>>> elements
> >>>>> for XmlLayout. Such arbitrarily nested structures are difficult to
> >>>> interact
> >>>>> with and no storage engine that I know of is able to index them
> >>>>> sufficiently. Hence, given the way stack traces are rendered, I am
> >> pretty
> >>>>> confident that nobody is looking at them.
> >>>>>
> >>>>> If there is anybody out there using JsonLayout, I presume they can
> >> easily
> >>>>> migrate to JsonTemplateLayout without breaking a sweat. If we receive
> >>>>> complaints regarding XML and YAML layouts, we can re-introduce them
> >>>> easily.
> >>>>> 3.0.0 release is a good opportunity to deprecate these modules.
> >> Otherwise
> >>>>> we will need to maintain them for another ~5 years.
> >>>>>
> >>>>> @Gary, is it possible for you to figure out who was using XmlLayout?
> >>>>>
> >>>>> On Wed, Dec 30, 2020 at 4:38 AM Ralph Goers <
> >> ralph.go...@dslextreme.com>
> >>>>> wrote:
> >>>>>
> >>>>>> Volkan, I am fine with deleting those modules however that would
> >> require
> >>>>>> that you make sure that you replace the existing Layouts with ones
> >> that
> >>>> use
> >>>>>> JsonTemplateLayout templates, take the same configuration parameters
> >> and
> >>>>>> produce the same results.
> >>>>>>
> >>>>>> In other words, when people move from 2.x to 3.x we want to minimize
> >> the
> >>>>>> changes they have to make to their applications. All existing
> >>>>>> configurations should continue to work. Custom Plugins should
> require
> >>>>>> recompilation but nothing more. Hopefully that would cover 95% of
> our
> >>>> users.
> >>>>>>
> >>>>>> Ralph
> >>>>>>
> >>>>>>> On Dec 29, 2020, at 2:52 PM, Volkan Yazıcı <
> volkan.yaz...@gmail.com>
> >>>>>> wrote:
> >>>>>>>
> >>>>>>> Hello,
> >>>>>>>
> >>>>>>> I propose deleting all the following 4 modules from master:
> >>>>>>>
> >>>>>>> log4j-layout-jackson
> >>>>>>> log4j-layout-jackson-json
> >>>>>>> log4j-layout-jackson-xml
> >>>>>>> log4j-layout-jackson-yaml
> >>>>>>>
> >>>>>>> The most (only?) used one, JsonLayout, is, IMHO, superseded by
> >>>>>>> JsonTemplateLayout. The rest, I believe, is not even used. If we
> >> happen
> >>>>>> to
> >>>>>>> receive requests, we can consider adding them again. Thoughts?
> >>>>>>>
> >>>>>>> Kind regards.
> >>>>>>>
> >>>>>>> *P.S.* No, I did not forget about the report on Online Drinks #1. I
> >>>> will
> >>>>>> do
> >>>>>>> that sometime this week.
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>
> >>>>
> >>>>
> >>
> >>
> >>
>
>

Reply via email to