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