How about: setLevelIfLoggerNameStartsWith or setLevelIfLoggerNameMatches ? Sent from my iPhone
> On 2015/08/28, at 12:09, Gary Gregory <garydgreg...@gmail.com> wrote: > >> On Thu, Aug 27, 2015 at 5:44 PM, Xen <x...@dds.nl> wrote: >> setAllLevels doesn't convey what the method does at all, in the sense that >> it is going to 'traverse' a descendent hierarchy. >> >> If the nonqualification of setBranch was a problem, you could make it >> setBranchLevel, but whatever. >> >> or setBranchLevels. >> >> I guess branch is not a concept in Log4J. >> >> it is a static method right?. >> >> setDescendentTreeLevels ;-). >> >> Well, anyway. > > Hm... but 'descendant' means the same as 'children' to me. I am not my own > descendant so that word is just as 'wrong' as children. > > The word 'tree' does convey that we are not just looking at the immediate > decendants/children. I like 'tree' better than 'branch'. > > setTreeLevel(String, Level)? > > Nice discussion :-) > > Gary > >> >> >> >> Quoting Gary Gregory <garydgreg...@gmail.com>: >> >>> Ah! Tricky stuff, that typing ;-) >>> >>> Committed. >>> >>> Gary >>> >>> On Thu, Aug 27, 2015 at 12:44 PM, Ralph Goers <ralph.go...@dslextreme.com> >>> wrote: >>> >>>> No. Autocorrect at work. Should have been ?Sounds? >>>> >>>> Ralph >>>> >>>> On Aug 27, 2015, at 12:24 PM, Gary Gregory <garydgreg...@gmail.com> wrote: >>>> >>>> Pardon my lack of urban engagement ;-) but do you mean "Spuds" as in >>>> http://www.urbandictionary.com/define.php?term=Spud+Me >>>> >>>> Gary >>>> >>>> On Thu, Aug 27, 2015 at 12:07 PM, Ralph Goers <ralph.go...@dslextreme.com> >>>> wrote: >>>> >>>>> Spuds ok to me >>>>> >>>>> Sent from my iPad >>>>> >>>>> On Aug 27, 2015, at 11:49 AM, Gary Gregory <garydgreg...@gmail.com> >>>>> wrote: >>>>> >>>>> setAllChildLevels is nice and explicit, but like setChildren it does not >>>>> convey the fact that the API sets the _given_ level _and_ its children. >>>>> >>>>> Maybe setAllLevels(String, Level) ? >>>>> >>>>> Gary >>>>> >>>>> On Thu, Aug 27, 2015 at 11:24 AM, Ralph Goers <ralph.go...@dslextreme.com >>>>> > wrote: >>>>> >>>>>> setBranch doesn?t resonate with me. Partly the problem is that you >>>>>> don?t identify what is being set in the name. I would actually prefer >>>>>> >>>>>> something like setAllChildLevels. >>>>>> >>>>>> Ralph >>>>>> >>>>>> On Aug 27, 2015, at 11:17 AM, Gary Gregory <garydgreg...@gmail.com> >>>>>> wrote: >>>>>> >>>>>> Ohhh, I like setBranch instead of setChildren. I'll let it simmer for a >>>>>> little... >>>>>> >>>>>> Thoughts from others? >>>>>> >>>>>> Gary >>>>>> >>>>>> >>>>>> >>>>>> On Thu, Aug 27, 2015 at 7:15 AM, Xen <x...@dds.nl> wrote: >>>>>> >>>>>>> Maybe you can call it setBranch() instead, since you are really trying >>>>>>> to set an entire branch of a tree, and you are no so much worried >>>>>>> about the >>>>>>> fact that they are children. In other words, the parent is included too. >>>>>>> >>>>>>> >>>>>>> >>>>>>> On Wed, 26 Aug 2015, Gary Gregory wrote: >>>>>>> >>>>>>> On Sat, Aug 22, 2015 at 1:58 PM, Gary Gregory <garydgreg...@gmail.com> >>>>>>>> wrote: >>>>>>>> >>>>>>>> In this case the caller is setChildren, so it would know. I've not >>>>>>>>> experimented with coding this yet though. >>>>>>>> A reminder that this new code has been in for a couple of days and >>>>>>>> that I >>>>>>>> am not in love with the API name setChildren, so I am open to >>>>>>>> suggestions. >>>>>>>> >>>>>>>> Gary >>>>>>>> >>>>>>>> >>>>>>>> Gary >>>>>>>>> >>>>>>>>> On Sat, Aug 22, 2015 at 11:10 AM, Ralph Goers < >>>>>>>>> ralph.go...@dslextreme.com> >>>>>>>>> wrote: >>>>>>>>> >>>>>>>>> Yes. Except that puts the burden on the caller to keep track of >>>>>>>>>> everything they modified. >>>>>>>>>> >>>>>>>>>> Ralph >>>>>>>>>> >>>>>>>>>> On Aug 22, 2015, at 9:33 AM, Gary Gregory <garydgreg...@gmail.com> >>>>>>>>>> wrote: >>>>>>>>>> >>>>>>>>>> Furthermore could loggerContext.updateLoggers() be optimized by >>>>>>>>>> passing >>>>>>>>>> it the the list of LoggerConfigs we modifed? >>>>>>>>>> >>>>>>>>>> Gary >>>>>>>>>> >>>>>>>>>> On Sat, Aug 22, 2015 at 9:04 AM, Gary Gregory < >>>>>>>>>> garydgreg...@gmail.com> >>>>>>>>>> wrote: >>>>>>>>>> >>>>>>>>>> Ah, like this then? >>>>>>>>>>> >>>>>>>>>>> /** >>>>>>>>>>> * Sets the levels of <code>parentLogger</code> and all 'child' >>>>>>>>>>> loggers to the given <code>level</level>. >>>>>>>>>>> * @param parentLogger the parent logger >>>>>>>>>>> * @param level the new level >>>>>>>>>>> */ >>>>>>>>>>> public static void setChildren(final String parentLogger, final >>>>>>>>>>> Level level) { >>>>>>>>>>> // get logger config >>>>>>>>>>> // if exact match? Use it, if not, create it. >>>>>>>>>>> // set level >>>>>>>>>>> // update loggers >>>>>>>>>>> final LoggerContext loggerContext = >>>>>>>>>>> LoggerContext.getContext(false); >>>>>>>>>>> final Configuration config = >>>>>>>>>>> loggerContext.getConfiguration(); >>>>>>>>>>> boolean set = setLevel(parentLogger, level, config); >>>>>>>>>>> final Map<String, LoggerConfig> loggerConfigMap = >>>>>>>>>>> config.getLoggers(); >>>>>>>>>>> for (Map.Entry<String, LoggerConfig> entry : >>>>>>>>>>> loggerConfigMap.entrySet()) { >>>>>>>>>>> if (entry.getKey().startsWith(parentLogger)) { >>>>>>>>>>> set |= setLevel(entry.getValue(), level); >>>>>>>>>>> } >>>>>>>>>>> } >>>>>>>>>>> if (set) { >>>>>>>>>>> loggerContext.updateLoggers(); >>>>>>>>>>> } >>>>>>>>>>> } >>>>>>>>>>> >>>>>>>>>>> Gary >>>>>>>>>>> >>>>>>>>>>> On Sat, Aug 22, 2015 at 8:19 AM, Gary Gregory < >>>>>>>>>>> garydgreg...@gmail.com> >>>>>>>>>>> wrote: >>>>>>>>>>> >>>>>>>>>>> Let's say I have >>>>>>>>>>>> >>>>>>>>>>>> Logger com = ERROR (or even just the root Logger at ERROR). >>>>>>>>>>>> >>>>>>>>>>>> and I want Logger com.domain.foo and all its children set to DEBUG >>>>>>>>>>>> >>>>>>>>>>>> If I get the LoggerConfig that matches the parent logger and call >>>>>>>>>>>> setLevel on that, I will end up with Logger com at DEBUG, won't I? >>>>>>>>>>>> >>>>>>>>>>>> Gary >>>>>>>>>>>> >>>>>>>>>>>> On Fri, Aug 21, 2015 at 9:53 PM, 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 >>>>>>>>>>>>>>>> <ggreg...@apache.org> >>>>>>>>>>>>>>>> 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: garydgreg...@gmail.com | ggreg...@apache.org >>>>>>>>>>>>>>> <ggreg...@apache.org> >>>>>>>>>>>>>>> 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: garydgreg...@gmail.com | ggreg...@apache.org >>>>>>>>>>>>>> <ggreg...@apache.org> >>>>>>>>>>>>>> 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: garydgreg...@gmail.com | ggreg...@apache.org >>>>>>>>>>>>> <ggreg...@apache.org> >>>>>>>>>>>>> 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: garydgreg...@gmail.com | ggreg...@apache.org >>>>>>>>>>>> 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: garydgreg...@gmail.com | ggreg...@apache.org >>>>>>>>>>> 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: garydgreg...@gmail.com | ggreg...@apache.org >>>>>>>>>> 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: garydgreg...@gmail.com | ggreg...@apache.org >>>>>>>>> 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: garydgreg...@gmail.com | ggreg...@apache.org >>>>>>>> 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 >>>>>>> >>>>>>> --------------------------------------------------------------------- >>>>>>> To unsubscribe, e-mail: log4j-dev-unsubscr...@logging.apache.org >>>>>>> For additional commands, e-mail: log4j-dev-h...@logging.apache.org >>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> E-Mail: garydgreg...@gmail.com | ggreg...@apache.org >>>>>> 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: garydgreg...@gmail.com | ggreg...@apache.org >>>>> 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: garydgreg...@gmail.com | ggreg...@apache.org >>>> 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: garydgreg...@gmail.com | ggreg...@apache.org >>> 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 >> >> >> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: log4j-dev-unsubscr...@logging.apache.org >> For additional commands, e-mail: log4j-dev-h...@logging.apache.org > > > > -- > 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