* @param base The base logger name to apply the change on (e.g.
* "org.geotools").
* @param filterLevel The level to log at - overrides user prefs.
*/
public static void init(final String base, Level filterLevel) {
Formatter log4j = null;
final Logger logger = org.geotools.util.logging.Logging.getLogger(base);
//This little routine may be a bit buggy, but it's the best I've got
//to make the levels change as we reload the dto's. Feel free to
//improve. ch
if (!logger.getUseParentHandlers()) {
logger.setLevel(filterLevel);
if (logger.getHandlers().length > 0) {
Handler handler = logger.getHandlers()[0];
//this should be the right handler, if set with geoserver.
if (handler != null) {
handler.setLevel(filterLevel);
}
}
}
for (Logger parent = logger; parent.getUseParentHandlers();) {
parent = parent.getParent();
if (parent == null) {
break;
}
final Handler[] handlers = parent.getHandlers();
if (handlers != null) {
for (int i = 0; i < handlers.length; i++) {
/*
* Search for a ConsoleHandler. Search is performed in the target
* handler and all its parent loggers. When a ConsoleHandler is
* found, it will be replaced by the Stdout handler for 'logger'
* only.
*/
Handler handler = handlers[i];
if (handler.getClass().equals(ConsoleHandler.class)) {
final Formatter formatter = handler.getFormatter();
if (formatter.getClass().equals(SimpleFormatter.class)) {
if (log4j == null) {
log4j = new Log4JFormatter(base);
}
try {