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
>>> JUnit in Action, Second Edition
>>> Spring Batch in Action
>>> 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
> JUnit in Action, Second Edition
> Spring Batch in Action
> Blog: http://garygregory.wordpress.com 
> Home: http://garygregory.com/
> Tweet! http://twitter.com/GaryGregory

Reply via email to