/**
* BSD-style license; for more info see http://pmd.sourceforge.net/license.html
*/
package net.sourceforge.pmd.util.log;
import java.util.logging.Handler;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
* @author Romain PELISSE, belaran@gmail.com
* @author Roberto Ferranti - rferranti@users.sourceforge.net Thanks to Jesse
* Glick for the bug report.
*
*/
public class ScopedLogHandlersManager {
private static final String PACKAGE_NAME = "net.sourceforge.pmd";
@SuppressWarnings("PMD.LoggerIsNotStaticFinal")
private Logger logger;
private Level oldLogLevel;
private Handler[] oldHandlers;
private Handler[] newHandlers;
public ScopedLogHandlersManager(Level level, Handler... handlers) {
newHandlers = handlers;
logger = Logger.getLogger(PACKAGE_NAME);
oldHandlers = logger.getHandlers();
oldLogLevel = logger.getLevel();
logger.setLevel(level);
// The Ant logger filters itself
for (Handler handler : oldHandlers) {
logger.removeHandler(handler);
}
for (Handler handler : newHandlers) {
logger.addHandler(handler);
}
}
public void close() {
for (Handler handler : newHandlers) {
logger.removeHandler(handler);
}
for (Handler handler : oldHandlers) {
logger.addHandler(handler);
}
logger.setLevel(oldLogLevel);
}
}