This use case makes perfect sense to me.

Ralph

> On Aug 22, 2015, at 10:29 AM, Xen <x...@dds.nl> wrote:
> 
> Personally I believe the use case of setting a parent (beginning point) and 
> all its descendents to a certain level is a bit odd.
> 
> As it seems there are basically two important reasons to have different 
> LoggerConfigs for children:
> 
> 1) to have different levels
> 2) to have different appenders.
> 
> Of course it means you can turn an entire subsystem to e.g. debug.
> 
> So the only real case would seem to be that you don't want different levels, 
> but still want different appenders. If you didn't care about levels and 
> appenders at all (supposedly) you wouldn't create new loggerconfigs.
> 
> So now you have parts of a subsystem logging perhaps to another database 
> because you want to study lowlevel dynamics or whatever. Maybe you are 
> interested in obtaining metrics of a certain subsystem. But now for some 
> reason you want the entire system (or subsystem of which that other subsystem 
> is a part) to become homogenous and output all at the same level.
> 
> That seems to me to fly in the face of creating distinct and separate 
> loggerconfigs in the first place. Because, how are you going to reset it to 
> its original state?. I forgot the term -- additivity, I could only remember 
> it as 'inheritance'. You might imagine some descendent logger not inheriting 
> from its ancestor. Having a different appender or otherwise config.
> 
> What will you do after you've all set them to the same level?. If that was 
> your intent all along, why not create them with that level?. Or is the idea 
> to keep raising and lowering the entire tree based on conditions or 
> customer/user input?. Then basically what you want is for the levels to be 
> linked, I guess that could happen.
> 
> So I really don't know. It just still seems odd.
> 
> Regards, B.
> 
> 
> 
> On Sat, 22 Aug 2015, Gary Gregory 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 <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>
>> 
> 
> ---------------------------------------------------------------------
> 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>

Reply via email to