logging-log4j-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Xen <...@dds.nl>
Subject Re: setting the level for a logger tree
Date Fri, 28 Aug 2015 00:44:13 GMT
setAllLevels doesn't convey what the method does at all, in the sense  
that it is going to 'traverse' a descendent hierarchy.

If the nonqualification of setBranch was a problem, you could make it  
setBranchLevel, but whatever.

or setBranchLevels.

I guess branch is not a concept in Log4J.

it is a static method right?.

setDescendentTreeLevels ;-).

Well, anyway.



Quoting Gary Gregory <garydgregory@gmail.com>:

> Ah! Tricky stuff, that typing ;-)
>
> Committed.
>
> Gary
>
> On Thu, Aug 27, 2015 at 12:44 PM, Ralph Goers <ralph.goers@dslextreme.com>
> wrote:
>
>> No. Autocorrect at work.  Should have been ?Sounds?
>>
>> Ralph
>>
>> On Aug 27, 2015, at 12:24 PM, Gary Gregory <garydgregory@gmail.com> wrote:
>>
>> Pardon my lack of urban engagement ;-) but do you mean "Spuds" as in
>> http://www.urbandictionary.com/define.php?term=Spud+Me
>>
>> Gary
>>
>> On Thu, Aug 27, 2015 at 12:07 PM, Ralph Goers <ralph.goers@dslextreme.com>
>> wrote:
>>
>>> Spuds ok to me
>>>
>>> Sent from my iPad
>>>
>>> On Aug 27, 2015, at 11:49 AM, Gary Gregory <garydgregory@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.goers@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 <garydgregory@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 <xen@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 <garydgregory@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.goers@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 <garydgregory@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 <
>>>>>>>> garydgregory@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 <
>>>>>>>>> garydgregory@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.goers@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 <garydgregory@gmail.com
>>>>>>>>>>> >
>>>>>>>>>>> wrote:
>>>>>>>>>>>
>>>>>>>>>>> On Wed, Aug 19, 2015 at 7:59 PM, Gary Gregory
<
>>>>>>>>>>> garydgregory@gmail.com>
>>>>>>>>>>>  wrote:
>>>>>>>>>>>
>>>>>>>>>>> On Sat, Aug 15, 2015 at 3:56 PM, Gary Gregory
<
>>>>>>>>>>>> garydgregory@gmail.com
>>>>>>>>>>>>
>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> On Sat, Aug 15, 2015 at 3:07 PM, Ralph Goers
<
>>>>>>>>>>>>> ralph.goers@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 <
>>>>>>>>>>>>>> garydgregory@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: garydgregory@gmail.com |
ggregory@apache.org
>>>>>>>>>>>>>> <ggregory@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: garydgregory@gmail.com | ggregory@apache.org
>>>>>>>>>>>>> <ggregory@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: garydgregory@gmail.com | ggregory@apache.org
>>>>>>>>>>>> <ggregory@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: garydgregory@gmail.com | ggregory@apache.org
>>>>>>>>>>> <ggregory@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: garydgregory@gmail.com | ggregory@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: garydgregory@gmail.com | ggregory@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: garydgregory@gmail.com | ggregory@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: garydgregory@gmail.com | ggregory@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: garydgregory@gmail.com | ggregory@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-unsubscribe@logging.apache.org
>>>>> For additional commands, e-mail: log4j-dev-help@logging.apache.org
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> E-Mail: garydgregory@gmail.com | ggregory@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: garydgregory@gmail.com | ggregory@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: garydgregory@gmail.com | ggregory@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: garydgregory@gmail.com | ggregory@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-unsubscribe@logging.apache.org
For additional commands, e-mail: log4j-dev-help@logging.apache.org


Mime
View raw message