Should this modify an existing LoggerConfig (that is installed and in use) while logging is taking place, or should one clone the existing Configuration, make the required changes and then swap the old Configuration for the new?
Remko Sent from my iPhone > On 2015/08/22, at 13:53, Ralph Goers <ralph.go...@dslextreme.com> 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 <garydgreg...@gmail.com> wrote: >> >>> On Wed, Aug 19, 2015 at 7:59 PM, Gary Gregory <garydgreg...@gmail.com> >>> wrote: >>>> On Sat, Aug 15, 2015 at 3:56 PM, Gary Gregory <garydgreg...@gmail.com> >>>> wrote: >>>>> On Sat, Aug 15, 2015 at 3:07 PM, Ralph Goers <ralph.go...@dslextreme.com> >>>>> 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 <garydgreg...@gmail.com> 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: garydgreg...@gmail.com | ggreg...@apache.org >>>>>> Java Persistence with Hibernate, Second Edition >>>>>> JUnit in Action, Second Edition >>>>>> Spring Batch in Action >>>>>> Blog: http://garygregory.wordpress.com >>>>>> Home: http://garygregory.com/ >>>>>> Tweet! http://twitter.com/GaryGregory >>>> >>>> >>>> >>>> >>>> -- >>>> E-Mail: garydgreg...@gmail.com | ggreg...@apache.org >>>> Java Persistence with Hibernate, Second Edition >>>> JUnit in Action, Second Edition >>>> Spring Batch in Action >>>> Blog: http://garygregory.wordpress.com >>>> Home: http://garygregory.com/ >>>> Tweet! http://twitter.com/GaryGregory >>> >>> >>> >>> >>> -- >>> E-Mail: garydgreg...@gmail.com | ggreg...@apache.org >>> Java Persistence with Hibernate, Second Edition >>> JUnit in Action, Second Edition >>> Spring Batch in Action >>> Blog: http://garygregory.wordpress.com >>> Home: http://garygregory.com/ >>> Tweet! http://twitter.com/GaryGregory >> >> >> >> -- >> E-Mail: garydgreg...@gmail.com | ggreg...@apache.org >> Java Persistence with Hibernate, Second Edition >> JUnit in Action, Second Edition >> Spring Batch in Action >> Blog: http://garygregory.wordpress.com >> Home: http://garygregory.com/ >> Tweet! http://twitter.com/GaryGregory >