No objection to creating logger names from Class.getCanonicalName() instead
of Class.getName(). I assume that this means we don't need a custom
toLoggerName(Class)
method.

Question for our Scala experts: does Class.getCanonicalName() preserve the
trailing $ in Scala classes?

At some point there was talk of API changes. Is that still needed?
Finally, I guess in order to keep supporting the current behaviour as well,
we still need to build configuration support for this <Configuration
hierarchySeparators="./$" ... Is my understanding correct?


On Sun, Aug 20, 2017 at 3:47 AM, Ralph Goers <[email protected]>
wrote:

> I agree.
>
> Ralph
>
> > On Aug 19, 2017, at 11:43 AM, Matt Sicker <[email protected]> wrote:
> >
> > Canonical name sounds like it makes sense. I wonder what that evaluates
> to
> > in other JVM languages like Scala, Kotlin, Clojure, etc., but it seems to
> > make sense.
> >
> > On 19 August 2017 at 13:23, Dominik Psenner <[email protected]> wrote:
> >
> >> To me it is a simple and good solution to the problem. The first
> outlined
> >> solution has the pro that it would give a user more sophisticated ways
> to
> >> build logger hierarchies from class names, but it is also something that
> >> only a very small subset of users would use. We can keep that as a wish
> for
> >> later.
> >>
> >> 2017-08-19 20:13 GMT+02:00 Gary Gregory <[email protected]>:
> >>
> >>> Any opposition to using the canonical name?
> >>>
> >>> Gary
> >>>
> >>> On Aug 14, 2017 15:28, "Gary Gregory" <[email protected]> wrote:
> >>>
> >>>> In LogManager, if we call getCanonicalName() instead of getName(), we
> >>> only
> >>>> get "."s, no "$"s...
> >>>>
> >>>> How about that?
> >>>>
> >>>> Gary
> >>>>
> >>>> On Mon, Aug 14, 2017 at 3:24 PM, Gary Gregory <[email protected]
> >
> >>>> wrote:
> >>>>
> >>>>> Another way to look at this is that instead of calling
> class.getName()
> >>> we
> >>>>> would call our own toLoggerName(Class) which would NOT use $ but only
> >>> use
> >>>>> "."s.
> >>>>>
> >>>>> Gary
> >>>>>
> >>>>> On Mon, Aug 14, 2017 at 3:07 PM, Matt Sicker <[email protected]>
> >> wrote:
> >>>>>
> >>>>>> The logger name hierarchy interpretation is handled at the string
> >>> level,
> >>>>>> not the class level. I don't think the class needs to be passed
> along
> >>> as
> >>>>>> there isn't much useful info we can get from the Class instance that
> >> we
> >>>>>> can't already figure out from its FQCN.
> >>>>>>
> >>>>>> On 14 August 2017 at 15:56, Ralph Goers <[email protected]
> >
> >>>>>> wrote:
> >>>>>>
> >>>>>>>
> >>>>>>>> On Aug 14, 2017, at 1:38 PM, Gary Gregory <
> >> [email protected]>
> >>>>>>> wrote:
> >>>>>>>>
> >>>>>>>> On Mon, Aug 14, 2017 at 2:08 PM, Ralph Goers <
> >>>>>> [email protected]
> >>>>>>> <mailto:[email protected]>>
> >>>>>>>> wrote:
> >>>>>>>>
> >>>>>>>>>
> >>>>>>>>>> On Aug 14, 2017, at 11:49 AM, Gary Gregory <
> >>> [email protected]
> >>>>>>>
> >>>>>>>>> wrote:
> >>>>>>>>>>
> >>>>>>>>>> On Mon, Aug 14, 2017 at 12:35 PM, Gary Gregory <
> >>>>>> [email protected]
> >>>>>>>>
> >>>>>>>>>> wrote:
> >>>>>>>>>>
> >>>>>>>>>>> Probably for Ralph:
> >>>>>>>>>>>
> >>>>>>>>>>> Right now, it's the LogManager in log4j-api that converts
> >> Class
> >>>>>> names
> >>>>>>>>> into
> >>>>>>>>>>> Logger names.
> >>>>>>>>>>>
> >>>>>>>>>>> There is no getLogger(Class) API in the Core LoggerContext.
> >>>>>>>>>>>
> >>>>>>>>>>> Should we push down this conversion into Core's LoggerContext?
> >>>>>>>>>>>
> >>>>>>>>>>> It seems the sane thing to do to:
> >>>>>>>>>>> - Avoid making something pluggable in log4j-api
> >>>>>>>>>>> - Avoid making Core parse logger names looking for separators.
> >>>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>> But that would mean adding two methods to:
> >>>>>>>>>>
> >>>>>>>>>> org.apache.logging.log4j.spi.LoggerContext:
> >>>>>>>>>>
> >>>>>>>>>> org.apache.logging.log4j.spi.LoggerContext.getLogger(Class<?>)
> >>>>>>>>>> org.apache.logging.log4j.spi.LoggerContext.getLogger(Class<?>,
> >>>>>>>>>> MessageFactory)
> >>>>>>>>>>
> >>>>>>>>>> Thoughts?
> >>>>>>>>>>
> >>>>>>>>>
> >>>>>>>>> Why does it mean that?
> >>>>>>>>>
> >>>>>>>>
> >>>>>>>> If we want the core to implement converting Class names to Logger
> >>>>>> names,
> >>>>>>>> the Class must be passed down to the Core. Right now the
> >> LogManager
> >>>>>> does
> >>>>>>>> that by calling org.apache.logging.log4j.spi.LoggerContext
> >>> methods.
> >>>>>>> These
> >>>>>>>> methods take only String for the logger name.
> >>>>>>>
> >>>>>>> And that is a problem because….?  I am trying to understand why
> >>>>>>> LoggerContext will be required to accept a class name.
> >>>>>>>
> >>>>>>> Ralph
> >>>>>>>
> >>>>>>>
> >>>>>>
> >>>>>>
> >>>>>> --
> >>>>>> Matt Sicker <[email protected]>
> >>>>>>
> >>>>>
> >>>>>
> >>>>
> >>>
> >>
> >>
> >>
> >> --
> >> Dominik Psenner
> >>
> >
> >
> >
> > --
> > Matt Sicker <[email protected]>
>
>
>

Reply via email to