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: [email protected] | [email protected]
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