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>

Reply via email to