You can modify the existing LoggerConfig. The value gets copied to the Loggers 
when updateLoggers is called.

Ralph

> On Aug 22, 2015, at 12:00 AM, Remko Popma <remko.po...@gmail.com> wrote:
> 
> Should this modify an existing LoggerConfig (that is installed and in use) 
> while logging is taking place, or should one clone the existing 
> Configuration, make the required changes and then swap the old Configuration 
> for the new?
> 
> Remko
> Sent from my iPhone
> 
>> On 2015/08/22, at 13:53, 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 
>>>>>>> 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
>>>> 
>>>> 
>>>> 
>>>> 
>>>> -- 
>>>> 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