I think that's how I wrote the first implementation, but that does not work for all cases because you need to create a LoggerConfig in some cases. IIRC I changed the impl once I started writing the unit tests.
Gary On Fri, Aug 21, 2015 at 9:53 PM, Ralph Goers <[email protected]> wrote: > That is definitely not how to implement it. > > You should get the LoggerConfig that matches your parent logger and call > setLevel on that. Then loop through all the loggerConfigs that start with > the located LoggerConfigs name and then call setLevel on them. You > typically aren’t going to have many LoggerConfigs while you could have > thousands of Loggers, which all resolve to the same LoggerConfig. > > Ralph > > On Aug 21, 2015, at 9:30 PM, Gary Gregory <[email protected]> wrote: > > On Wed, Aug 19, 2015 at 7:59 PM, Gary Gregory <[email protected]> > wrote: > >> On Sat, Aug 15, 2015 at 3:56 PM, Gary Gregory <[email protected]> >> wrote: >> >>> On Sat, Aug 15, 2015 at 3:07 PM, Ralph Goers <[email protected] >>> > wrote: >>> >>>> Why do you want to set the level on the LoggerConfig and all its >>>> descendants? >>>> >>> >>> Because I clearly did not educate myself fully in this topic. ;-) Hence >>> I am looking for a shortcut by asking on the ML :-) >>> >>> >>>> Setting the level just on the LoggerConfig will achieve the same thing, >>>> so long as none of its descendants has a LoggerConfig >>>> >>> >>> That's cool, but... How can I know if any descendant has a LoggerConfig? >>> How can do this generically? >>> >> >> Here is my proposal (including a test): >> https://issues.apache.org/jira/secure/attachment/12751400/log4j.diff >> >> I am not crazy about the API name: setChildren(String loggerName, Level >> level). >> >> Thoughts? >> > > Anyone? Bueller? :-) > > >> >> Gary >> >> >>> Gary >>> >>> >>>> >>>> Sent from my iPad >>>> >>>> On Aug 15, 2015, at 8:25 AM, Gary Gregory <[email protected]> >>>> wrote: >>>> >>>> Let's say I have a logger tree like: >>>> >>>> R >>>> R.P >>>> R.P.C1 >>>> R.P.C1.L1 >>>> R.P.C2.L2 >>>> R.P.C2 >>>> R.P.C2.L1 >>>> R.P.C2.L2 >>>> >>>> and I want to set R.P.C2 and all it's descendants to a given level. >>>> >>>> In Log4j 1.2, I do: >>>> >>>> public static void setChildren(final Logger parentLogger, final >>>> Level newLevel) { >>>> final Enumeration<Logger> enumeration = >>>> LogManager.getCurrentLoggers(); >>>> while (enumeration.hasMoreElements()) { >>>> final Logger logger = enumeration.nextElement(); >>>> if (LoggerUtils.isChild(parentLogger, logger)) { >>>> logger.setLevel(newLevel); >>>> } >>>> } >>>> } >>>> >>>> private static boolean isChild(final Logger parentCandidate, final >>>> Logger childCandidate) { >>>> for (Category c = childCandidate; c != null; c = >>>> c.getParent()) { >>>> if (c.equals(parentCandidate)) { >>>> return true; >>>> } >>>> } >>>> return false; >>>> } >>>> >>>> I suppose I could determine parent/child with a startWith on the logger >>>> name too. >>>> >>>> I there a better way to do this with the Core in v2 aside from >>>> iterating over all loggers in a context and doing a kind of isChild()? Can >>>> additivity be used for this? >>>> >>>> I'd like to add such a utility method to Configurator. >>>> >>>> Gary >>>> >>>> -- >>>> E-Mail: [email protected] | [email protected] >>>> <[email protected]> >>>> Java Persistence with Hibernate, Second Edition >>>> <http://www.manning.com/bauer3/> >>>> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/> >>>> Spring Batch in Action <http://www.manning.com/templier/> >>>> Blog: http://garygregory.wordpress.com >>>> Home: http://garygregory.com/ >>>> Tweet! http://twitter.com/GaryGregory >>>> >>>> >>> >>> >>> -- >>> E-Mail: [email protected] | [email protected] >>> <[email protected]> >>> Java Persistence with Hibernate, Second Edition >>> <http://www.manning.com/bauer3/> >>> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/> >>> Spring Batch in Action <http://www.manning.com/templier/> >>> Blog: http://garygregory.wordpress.com >>> Home: http://garygregory.com/ >>> Tweet! http://twitter.com/GaryGregory >>> >> >> >> >> -- >> E-Mail: [email protected] | [email protected] >> <[email protected]> >> Java Persistence with Hibernate, Second Edition >> <http://www.manning.com/bauer3/> >> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/> >> Spring Batch in Action <http://www.manning.com/templier/> >> Blog: http://garygregory.wordpress.com >> Home: http://garygregory.com/ >> Tweet! http://twitter.com/GaryGregory >> > > > > -- > E-Mail: [email protected] | [email protected] > <[email protected]> > Java Persistence with Hibernate, Second Edition > <http://www.manning.com/bauer3/> > JUnit in Action, Second Edition <http://www.manning.com/tahchiev/> > Spring Batch in Action <http://www.manning.com/templier/> > Blog: http://garygregory.wordpress.com > Home: http://garygregory.com/ > Tweet! http://twitter.com/GaryGregory > > > -- E-Mail: [email protected] | [email protected] Java Persistence with Hibernate, Second Edition <http://www.manning.com/bauer3/> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/> Spring Batch in Action <http://www.manning.com/templier/> Blog: http://garygregory.wordpress.com Home: http://garygregory.com/ Tweet! http://twitter.com/GaryGregory
