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

Reply via email to