“Out of bounds” is not the correct statement. Unnecessary is. We already convert the class name to a String in the API so there is no reason to have that method.
Ralph > On Aug 22, 2017, at 8:32 AM, Gary Gregory <garydgreg...@gmail.com> wrote: > > Hi Ralph, > > I looked over the links and I (still) do understand the separation and I > have a follow up question below. > > First, to be precise, I am proposing to add this shorthand method (note > there is no @Override to ease compatibility, so no change to > org.apache.logging.log4j.spi.LoggerContext): > > diff --git > a/log4j-core/src/main/java/org/apache/logging/log4j/core/LoggerContext.java > b/log4j-core/src/main/java/org/apache/logging/log4j/core/LoggerContext.java > index cd15dce..8002853 100644 > --- > a/log4j-core/src/main/java/org/apache/logging/log4j/core/LoggerContext.java > +++ > b/log4j-core/src/main/java/org/apache/logging/log4j/core/LoggerContext.java > @@ -410,6 +410,17 @@ > } > > /** > + * Returns a Logger using the fully qualified name of the Class as the > Logger name. > + * > + * @param clazz The Class whose name should be used as the Logger > name. If null it will default to the calling > + * class. > + * @return The Logger. > + */ > + public Logger getLogger(final Class<?> clazz) { > + return getLogger(clazz.getCanonicalName(), null); > + } > + > + /** > * Gets a Logger from the Context. > * > * @param name The name of the Logger to return. > > Regardless of the above, would you say that the interface > org.apache.logging.log4j.spi.LoggerContext is also "out of bounds" for > normal/non-advanced use cases of "get me a logger" even though it is in the > log4j-api module? > > Thank you again! > Gary > > > On Mon, Aug 21, 2017 at 10:34 PM, Gary Gregory <garydgreg...@gmail.com> > wrote: > >> On Mon, Aug 21, 2017 at 10:27 PM, Ralph Goers <ralph.go...@dslextreme.com> >> wrote: >> >>> I would say look at http://logging.apache.org/log4j/2.x/ < >>> http://logging.apache.org/log4j/2.x/> and that paragraph entitled “API >>> Separation”. Then look at http://logging.apache.org/log4 >>> j/2.x/manual/api.html <http://logging.apache.org/log >>> 4j/2.x/manual/api.html>. The first paragraph makes it clear what our >>> intent is. It should be telling that nowhere on that page is the >>> LoggerContext mentioned. It isn’t until you get to the Configuration >>> section that LoggerContext APIs are discussed. >>> >>> So the intent of the design is that code that is performing logging >>> sticks to the Log4j API - providing it with a guarantee of backward >>> compatibility. In a lot of cases no custom configuration is needed and so >>> the whole application will be compatible no matter what we change >>> internally. That doesn’t mean that getLogger() cannot be called - but IMO >>> applications should never be calling it for “normal" logging operations. >>> >>> All of that said, I wouldn’t veto a code commit to do what you want. It >>> is just not something I’d consider as a worst practice if I found it in >>> someone’s code for “normal” logging and I would strongly recommend they >>> change it. >>> >> >> Thanks for the details. I'll read up on the links and sleep on it. >> >> Gary >> >> >>> >>> Ralph >>> >>>> On Aug 21, 2017, at 6:45 PM, Gary Gregory <garydgreg...@gmail.com> >>> wrote: >>>> >>>> Hi Ralph, >>>> >>>> Would you say that is your opinion or the intent of the design? And if >>> the >>>> latter, should we adjust the Javadoc accordingly. >>>> >>>> Gary >>>> >>>> On Mon, Aug 21, 2017 at 7:31 PM, Ralph Goers < >>> ralph.go...@dslextreme.com> >>>> wrote: >>>> >>>>> I am against encouraging users to directly acquire a Logger. >>>>> >>>>> Ralph >>>>> >>>>> >>>>>> On Aug 21, 2017, at 5:24 PM, Gary Gregory <garydgreg...@gmail.com> >>>>> wrote: >>>>>> >>>>>> On Mon, Aug 21, 2017 at 6:01 PM, Ralph Goers < >>> ralph.go...@dslextreme.com >>>>>> >>>>>> wrote: >>>>>> >>>>>>> It is actually funny that you say that. The API we provide for >>>>> performing >>>>>>> logging is log4j-api, not log4j-core. We provide access in log4j-core >>>>> for >>>>>>> users to customize how they configure their logging - not perform it. >>>>>>> >>>>>> >>>>>> I'm all about humoring the ML :-) >>>>>> >>>>>> Any further thoughts on adding these APIs? For or against? >>>>>> >>>>>> Gary >>>>>> >>>>>>> >>>>>>> Ralph >>>>>>> >>>>>>>> On Aug 21, 2017, at 3:42 PM, Gary Gregory <garydgreg...@gmail.com> >>>>>>> wrote: >>>>>>>> >>>>>>>> Hi, >>>>>>>> >>>>>>>> When someone calls any of the init methods like >>>>>>>> org.apache.logging.log4j.core.config.Configurator.initialize >>> (String, >>>>>>>> ClassLoader, String), you get a Core LoggerContext, and that's what >>>>>>> you've >>>>>>>> got to work with... Why is that a bad idea? That's the API we >>> provide. >>>>>>>> >>>>>>>> Gary >>>>>>>> >>>>>>>> On Mon, Aug 21, 2017 at 4:30 PM, Ralph Goers < >>>>> ralph.go...@dslextreme.com >>>>>>>> >>>>>>>> wrote: >>>>>>>> >>>>>>>>> So you are saying that your application is getting Loggers by doing >>>>>>>>> LoggerContext.getLogger()? I guess I don’t really understand why >>> that >>>>>>> is a >>>>>>>>> good idea. Are you saying you have your own custom LoggerContext >>> and >>>>>>> that >>>>>>>>> you want to modify Log4j’s LoggerContext simply so you can modify >>>>> yours? >>>>>>>>> >>>>>>>>> Ralph >>>>>>>>> >>>>>>>>>> On Aug 21, 2017, at 3:01 PM, Gary Gregory <garydgreg...@gmail.com >>>> >>>>>>>>> wrote: >>>>>>>>>> >>>>>>>>>> My use case is that deep in the guts and call stack of my >>>>> server/app, I >>>>>>>>>> have a specific Core LoggerContext that I should/must use. Log4j >>> and >>>>>>>>> other >>>>>>>>>> components must co-exist in a long-lived server that have modules >>>>> that >>>>>>>>> are >>>>>>>>>> constantly re-initialized/re-configured during development and >>>>> testing >>>>>>>>>> phases. During acceptance and production, the are fewer >>>>>>> reconfigurations, >>>>>>>>>> but they do happen. The bottom line is that most logging code >>> dishes >>>>>>> out >>>>>>>>>> Loggers out of specific LoggerContext instances and not out of the >>>>>>>>>> LogManager classes (only in a few rare places.) >>>>>>>>>> >>>>>>>>>> Gary >>>>>>>>>> >>>>>>>>>> On Mon, Aug 21, 2017 at 3:47 PM, Ralph Goers < >>>>>>> ralph.go...@dslextreme.com >>>>>>>>>> >>>>>>>>>> wrote: >>>>>>>>>> >>>>>>>>>>> Did you ask this question last week? Why is it needed? Why can’t >>>>> this >>>>>>>>> be >>>>>>>>>>> handled in LogManager? >>>>>>>>>>> >>>>>>>>>>> Ralph >>>>>>>>>>> >>>>>>>>>>>> On Aug 21, 2017, at 2:10 PM, Gary Gregory < >>> garydgreg...@gmail.com> >>>>>>>>>>> wrote: >>>>>>>>>>>> >>>>>>>>>>>> Hi All: >>>>>>>>>>>> >>>>>>>>>>>> I have a need for the shortcut method >>>>>>>>>>>> org.apache.logging.log4j.core.LoggerContext getLogger(Class) >>> which >>>>>>>>> would >>>>>>>>>>>> use getCannonicalName(). >>>>>>>>>>>> >>>>>>>>>>>> Any objection to adding that? >>>>>>>>>>>> >>>>>>>>>>>> Gary >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>> >>>>> >>>>> >>> >>> >>