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 <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>