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 > <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 > <mailto: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 > <mailto: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 >> <mailto: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 >>> <mailto: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 <mailto: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 >>> <mailto: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 >>> <mailto: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 >>> <mailto: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 >>> <mailto: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 >>> <mailto: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 <mailto: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 >>> <mailto:garydgreg...@gmail.com>> >>> wrote: >>> >>> On Wed, Aug 19, 2015 at 7:59 PM, Gary Gregory <garydgreg...@gmail.com >>> <mailto:garydgreg...@gmail.com>> >>> wrote: >>> >>> On Sat, Aug 15, 2015 at 3:56 PM, Gary Gregory <garydgreg...@gmail.com >>> <mailto:garydgreg...@gmail.com> >>> wrote: >>> >>> On Sat, Aug 15, 2015 at 3:07 PM, Ralph Goers < >>> ralph.go...@dslextreme.com <mailto: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 >>> <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 >>> <mailto: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 <mailto:garydgreg...@gmail.com> | >>> ggreg...@apache.org <mailto:ggreg...@apache.org> >>> <ggreg...@apache.org <mailto:ggreg...@apache.org>> >>> Java Persistence with Hibernate, Second Edition >>> <http://www.manning.com/bauer3/ <http://www.manning.com/bauer3/>> >>> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/ >>> <http://www.manning.com/tahchiev/>> >>> Spring Batch in Action <http://www.manning.com/templier/ >>> <http://www.manning.com/templier/>> >>> Blog: http://garygregory.wordpress.com <http://garygregory.wordpress.com/> >>> Home: http://garygregory.com/ <http://garygregory.com/> >>> Tweet! http://twitter.com/GaryGregory <http://twitter.com/GaryGregory> >>> >>> >>> >>> >>> -- >>> E-Mail: garydgreg...@gmail.com <mailto:garydgreg...@gmail.com> | >>> ggreg...@apache.org <mailto:ggreg...@apache.org> >>> <ggreg...@apache.org <mailto:ggreg...@apache.org>> >>> Java Persistence with Hibernate, Second Edition >>> <http://www.manning.com/bauer3/ <http://www.manning.com/bauer3/>> >>> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/ >>> <http://www.manning.com/tahchiev/>> >>> Spring Batch in Action <http://www.manning.com/templier/ >>> <http://www.manning.com/templier/>> >>> Blog: http://garygregory.wordpress.com <http://garygregory.wordpress.com/> >>> Home: http://garygregory.com/ <http://garygregory.com/> >>> Tweet! http://twitter.com/GaryGregory <http://twitter.com/GaryGregory> >>> >>> >>> >>> >>> -- >>> E-Mail: garydgreg...@gmail.com <mailto:garydgreg...@gmail.com> | >>> ggreg...@apache.org <mailto:ggreg...@apache.org> >>> <ggreg...@apache.org <mailto:ggreg...@apache.org>> >>> Java Persistence with Hibernate, Second Edition >>> <http://www.manning.com/bauer3/ <http://www.manning.com/bauer3/>> >>> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/ >>> <http://www.manning.com/tahchiev/>> >>> Spring Batch in Action <http://www.manning.com/templier/ >>> <http://www.manning.com/templier/>> >>> Blog: http://garygregory.wordpress.com <http://garygregory.wordpress.com/> >>> Home: http://garygregory.com/ <http://garygregory.com/> >>> Tweet! http://twitter.com/GaryGregory <http://twitter.com/GaryGregory> >>> >>> >>> >>> >>> -- >>> E-Mail: garydgreg...@gmail.com <mailto:garydgreg...@gmail.com> | >>> ggreg...@apache.org <mailto:ggreg...@apache.org> >>> <ggreg...@apache.org <mailto:ggreg...@apache.org>> >>> Java Persistence with Hibernate, Second Edition >>> <http://www.manning.com/bauer3/ <http://www.manning.com/bauer3/>> >>> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/ >>> <http://www.manning.com/tahchiev/>> >>> Spring Batch in Action <http://www.manning.com/templier/ >>> <http://www.manning.com/templier/>> >>> Blog: http://garygregory.wordpress.com <http://garygregory.wordpress.com/> >>> Home: http://garygregory.com/ <http://garygregory.com/> >>> Tweet! http://twitter.com/GaryGregory <http://twitter.com/GaryGregory> >>> >>> >>> >>> >>> >>> -- >>> E-Mail: garydgreg...@gmail.com <mailto:garydgreg...@gmail.com> | >>> ggreg...@apache.org <mailto:ggreg...@apache.org> >>> Java Persistence with Hibernate, Second Edition >>> <http://www.manning.com/bauer3/ <http://www.manning.com/bauer3/>> >>> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/ >>> <http://www.manning.com/tahchiev/>> >>> Spring Batch in Action <http://www.manning.com/templier/ >>> <http://www.manning.com/templier/>> >>> Blog: http://garygregory.wordpress.com <http://garygregory.wordpress.com/> >>> Home: http://garygregory.com/ <http://garygregory.com/> >>> Tweet! http://twitter.com/GaryGregory <http://twitter.com/GaryGregory> >>> >>> >>> >>> >>> -- >>> E-Mail: garydgreg...@gmail.com <mailto:garydgreg...@gmail.com> | >>> ggreg...@apache.org <mailto:ggreg...@apache.org> >>> Java Persistence with Hibernate, Second Edition >>> <http://www.manning.com/bauer3/ <http://www.manning.com/bauer3/>> >>> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/ >>> <http://www.manning.com/tahchiev/>> >>> Spring Batch in Action <http://www.manning.com/templier/ >>> <http://www.manning.com/templier/>> >>> Blog: http://garygregory.wordpress.com <http://garygregory.wordpress.com/> >>> Home: http://garygregory.com/ <http://garygregory.com/> >>> Tweet! http://twitter.com/GaryGregory <http://twitter.com/GaryGregory> >>> >>> >>> >>> >>> -- >>> E-Mail: garydgreg...@gmail.com <mailto:garydgreg...@gmail.com> | >>> ggreg...@apache.org <mailto:ggreg...@apache.org> >>> Java Persistence with Hibernate, Second Edition >>> <http://www.manning.com/bauer3/ <http://www.manning.com/bauer3/>> >>> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/ >>> <http://www.manning.com/tahchiev/>> >>> Spring Batch in Action <http://www.manning.com/templier/ >>> <http://www.manning.com/templier/>> >>> Blog: http://garygregory.wordpress.com <http://garygregory.wordpress.com/> >>> Home: http://garygregory.com/ <http://garygregory.com/> >>> Tweet! http://twitter.com/GaryGregory <http://twitter.com/GaryGregory> >>> >>> >>> >>> >>> >>> -- >>> E-Mail: garydgreg...@gmail.com <mailto:garydgreg...@gmail.com> | >>> ggreg...@apache.org <mailto:ggreg...@apache.org> >>> Java Persistence with Hibernate, Second Edition >>> <http://www.manning.com/bauer3/ <http://www.manning.com/bauer3/>> >>> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/ >>> <http://www.manning.com/tahchiev/>> >>> Spring Batch in Action <http://www.manning.com/templier/ >>> <http://www.manning.com/templier/>> >>> Blog: http://garygregory.wordpress.com <http://garygregory.wordpress.com/> >>> Home: http://garygregory.com/ <http://garygregory.com/> >>> Tweet! http://twitter.com/GaryGregory <http://twitter.com/GaryGregory> >>> >>> >>> >>> >>> -- >>> E-Mail: garydgreg...@gmail.com <mailto:garydgreg...@gmail.com> | >>> ggreg...@apache.org <mailto:ggreg...@apache.org> >>> Java Persistence with Hibernate, Second Edition >>> <http://www.manning.com/bauer3/ <http://www.manning.com/bauer3/>> >>> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/ >>> <http://www.manning.com/tahchiev/>> >>> Spring Batch in Action <http://www.manning.com/templier/ >>> <http://www.manning.com/templier/>> >>> Blog: http://garygregory.wordpress.com <http://garygregory.wordpress.com/> >>> Home: http://garygregory.com/ <http://garygregory.com/> >>> Tweet! http://twitter.com/GaryGregory <http://twitter.com/GaryGregory> >>> >>> >>> >>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: log4j-dev-unsubscr...@logging.apache.org >>> <mailto:log4j-dev-unsubscr...@logging.apache.org> >>> For additional commands, e-mail: log4j-dev-h...@logging.apache.org >>> <mailto:log4j-dev-h...@logging.apache.org> >>> >>> >>> >>> -- >>> E-Mail: garydgreg...@gmail.com <mailto:garydgreg...@gmail.com> | >>> ggreg...@apache.org <mailto: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 <http://garygregory.wordpress.com/> >>> Home: http://garygregory.com/ <http://garygregory.com/> >>> Tweet! http://twitter.com/GaryGregory <http://twitter.com/GaryGregory> >> >> >> >> -- >> E-Mail: garydgreg...@gmail.com <mailto:garydgreg...@gmail.com> | >> ggreg...@apache.org <mailto: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 <http://garygregory.wordpress.com/> >> Home: http://garygregory.com/ <http://garygregory.com/> >> Tweet! http://twitter.com/GaryGregory <http://twitter.com/GaryGregory> > > > -- > E-Mail: garydgreg...@gmail.com <mailto:garydgreg...@gmail.com> | > ggreg...@apache.org <mailto: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 <http://garygregory.wordpress.com/> > Home: http://garygregory.com/ <http://garygregory.com/> > Tweet! http://twitter.com/GaryGregory <http://twitter.com/GaryGregory>