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

Reply via email to