I will push a temporary branch into
gitbox.apache.org/repos/asf/activemq-artemis.git named new-logging

This branch will be later removed and all the commits squashed
accordingly before we push a change into main.

This is just to make it easier for multiple people to work on the same
branch while we are working on this.


I don't mind much about the commit messages at this point as they are
all going to be squashed...

On Sat, May 7, 2022 at 12:24 AM Michael André Pearce
<michael.andre.pea...@me.com.invalid> wrote:
>
> +1 for switching to slf4j
>
> My only one and main comment will be that it is essential that the out the 
> box configuration should result in the same log formats and codes as today, 
> as I know many rely on log format parsing and rules for alerting, so to be 
> non breaking change the log output should be identical.
>
> Sent from my iPad
>
> > On 4 May 2022, at 18:27, Arthur Naseef <a...@amlinv.com> wrote:
> >
> > +1 on SLF4J - that's what it does: eliminate the tight coupling of code
> > generating log output from the logging implementation.
> >
> > For testing, I would just make the logger injectable, but configure a
> > default.  Here's a "Live Template" for intellij that does this (minus the
> > getter and setter):
> >
> > private static final org.slf4j.Logger DEFAULT_LOGGER =
> > org.slf4j.LoggerFactory.getLogger($CLASS$.class);
> >
> >
> > private org.slf4j.Logger log = DEFAULT_LOGGER;
> >
> >
> > Cheers!
> >
> > Art
> >
> >
> >> On Wed, May 4, 2022 at 8:15 AM Matt Pavlovich <mattr...@gmail.com> wrote:
> >>
> >> Hey Clebert-
> >>
> >> We just did this as part of log4j2 conversion.  Here is a sample test
> >> class w/ in-line appender:
> >>
> >>
> >> https://github.com/apache/activemq/blob/ae30dce4e24ce5e0467d2a3219627cbefef1f0ae/activemq-unit-tests/src/test/java/org/apache/activemq/usage/StoreUsageLimitsTest.java
> >> <
> >> https://github.com/apache/activemq/blob/ae30dce4e24ce5e0467d2a3219627cbefef1f0ae/activemq-unit-tests/src/test/java/org/apache/activemq/usage/StoreUsageLimitsTest.java
> >>>
> >>
> >> Matt Pavlovich
> >>
> >>> On May 4, 2022, at 7:37 AM, Clebert Suconic <clebert.suco...@gmail.com>
> >> wrote:
> >>>
> >>> A few questions I have:
> >>>
> >>> - One of things we do in the testsuite is to capture loggers with an
> >>> interceptor and assert the loggers were called. How would we do such a
> >>> thing? an appender? Can someone point me to a test in ActiveMQ5 doing
> >>> that?
> >>>
> >>> - how would you configure Log4J? (assuming we are using log4j with SLF4j)
> >>>
> >>> - also we have separate loggers for Auditing... I think that will be
> >>> just an entry on the log4j configuration.
> >>>
> >>> On Wed, May 4, 2022 at 8:16 AM Clebert Suconic
> >>> <clebert.suco...@gmail.com> wrote:
> >>>>
> >>>> MDC seems nice, but I don't think it's relevant here.. we need the
> >>>> Codes as part of the messages where they appear. Some users will
> >>>> create alerts for them on their log frameworks.
> >>>>
> >>>> On Wed, May 4, 2022 at 1:16 AM Christoph Läubrich <m...@laeubi-soft.de>
> >> wrote:
> >>>>>
> >>>>> SLF4J support the "Mapped Diagnostic Context"
> >>>>>
> >>>>> maybe this would be a good replacement here? you could even add more
> >>>>> context infos then and people are free to format them as they like:
> >>>>>
> >>>>> https://logback.qos.ch/manual/mdc.html
> >>>>>
> >>>>> Am 03.05.22 um 22:30 schrieb Justin Bertram:
> >>>>>> The point here is that the current logging implementation provides a
> >> simple
> >>>>>> way to associate codes with each user-facing log message and
> >> exception.
> >>>>>> This is helpful to those who may want to monitor logs for certain
> >> codes
> >>>>>> (e.g. for alerting purposes), filter some codes out, etc. In this way
> >> the
> >>>>>> logging is part of a contract with the users much like an API is a
> >> contract
> >>>>>> with developers. The codes stay consistent across versions but the
> >> content
> >>>>>> of the message may change (e.g. to provide more information, correct
> >>>>>> spelling errors, typos, etc.). This kind of facade also opens the
> >> door for
> >>>>>> fairly simple internationalization.
> >>>>>>
> >>>>>> The goals here as I see them:
> >>>>>> - Maintain the aforementioned functionality.
> >>>>>> - Ditch the dependence on JBoss Log Manager and JBoss Logging.
> >>>>>>
> >>>>>> Having a simple implementation of our own is an easy way to do this.
> >> If we
> >>>>>> decide to go this route then (and only then) we will need to decide
> >> on the
> >>>>>> underlying logging facade and implementation.
> >>>>>>
> >>>>>>
> >>>>>> Justin
> >>>>>>
> >>>>>>
> >>>>>> On Tue, May 3, 2022 at 3:17 PM Christopher Shannon <
> >>>>>> christopher.l.shan...@gmail.com> wrote:
> >>>>>>
> >>>>>>> Using SL4J makes sense to me as that is what almost everyone else
> >> uses so
> >>>>>>> it's pretty standard and easy to swap implementations
> >>>>>>>
> >>>>>>> On Mon, May 2, 2022 at 1:26 PM Justin Bertram <jbert...@apache.org>
> >> wrote:
> >>>>>>>
> >>>>>>>> I think this looks great, Clebert. The code is straightforward, and
> >> I
> >>>>>>> like
> >>>>>>>> the idea of reducing our dependencies.
> >>>>>>>>
> >>>>>>>> This is a +1 from me.
> >>>>>>>>
> >>>>>>>>
> >>>>>>>> Justin
> >>>>>>>>
> >>>>>>>> On Fri, Apr 29, 2022 at 3:43 PM Clebert Suconic <
> >>>>>>> clebert.suco...@gmail.com
> >>>>>>>>>
> >>>>>>>> wrote:
> >>>>>>>>
> >>>>>>>>> For a while, I thought it would be nice to remove jboss-logging
> >> from
> >>>>>>>>> artemis and use a generic logger. (SLF4J, Log4j, commons..
> >> whatever..
> >>>>>>>>> it's all orthogonal and transparent to this discussion, we can
> >> decide
> >>>>>>>>> that at a later point).
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>> One of the issues we had while making the move would be the
> >> generated
> >>>>>>>>> error codes out of the Log Processor.
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>> So, I put together a prototype here that would generate code based
> >> on
> >>>>>>>>> an interface and that could use whatever logger we choose. I will
> >> try
> >>>>>>>>> to never remove the branch for future reference:
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>
> >>>>>>>
> >> https://github.com/clebertsuconic/activemq-artemis/tree/prototype-log-processor
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>> the Log processor would read the annotations and generate the code:
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>
> >>>>>>>
> >> https://github.com/clebertsuconic/activemq-artemis/blob/prototype-log-processor/artemis-log-processor/src/main/java/org/apache/activemq/artemis/logprocessor/processor/LogProcessor.java
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>> A testcase here would show how such processing would work:
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>
> >>>>>>>
> >> https://github.com/clebertsuconic/activemq-artemis/blob/prototype-log-processor/artemis-log-processor/src/test/java/org/apache/activemq/i18n/test/SimpleBundleTest.java
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>> I have added some code on the artemis-server, trying to simulate
> >> what
> >>>>>>>>> we would do in "real life":
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>
> >>>>>>>
> >> https://github.com/clebertsuconic/activemq-artemis/blob/prototype-log-processor/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/ActiveMQServerNewLogger.java
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>> This test here is making a call to the NewLogger, just to show how
> >>>>>>>>> processing would work. Everything would work just like it would
> >> now:
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>
> >>>>>>>
> >> https://github.com/clebertsuconic/activemq-artemis/blob/prototype-log-processor/artemis-server/src/test/java/org/apache/activemq/artemis/core/TestSample.java
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>> I would appreciate some feedback if this is a good way forward or
> >>>>>>> not...
> >>>>>>>>>
> >>>>>>>>> (please let's not diverge on what logging framework we are choosing
> >>>>>>>>> now... that's a separate discussion).
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>> --
> >>>>>>>>> Clebert Suconic
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>
> >>>>>>>
> >>>>>>
> >>>>
> >>>>
> >>>>
> >>>> --
> >>>> Clebert Suconic
> >>>
> >>>
> >>>
> >>> --
> >>> Clebert Suconic
> >>
> >>



-- 
Clebert Suconic

Reply via email to