The only change I am now talking about is replacing getName() with getCannonicalName().
Gary On Aug 19, 2017 18:00, "Remko Popma" <[email protected]> wrote: > 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]> > > > > > > >
