package org.oddjob.tools; import java.util.Enumeration; import java.util.HashMap; import java.util.Map; import org.apache.log4j.Appender; import org.apache.log4j.ConsoleAppender; import org.apache.log4j.Level; import org.apache.log4j.Logger; import org.apache.log4j.Priority; public class Log4jConsoleThresholdChanger implements AutoCloseable { private final Map<ConsoleAppender, Priority> consoleAppenders = new HashMap<>(); public Log4jConsoleThresholdChanger() { this(Level.WARN); } public Log4jConsoleThresholdChanger(Level newLevel) { Logger logger = Logger.getRootLogger(); @SuppressWarnings("unchecked") Enumeration<Appender> appenders = logger.getAllAppenders(); while (appenders.hasMoreElements()) { Appender appender = appenders.nextElement(); if (appender instanceof ConsoleAppender) { ConsoleAppender consoleAppender = (ConsoleAppender) appender; Priority existingLevel = consoleAppender.getThreshold(); consoleAppenders.put(consoleAppender, existingLevel); consoleAppender.setThreshold(newLevel); } } } @Override public void close() { for (Map.Entry<ConsoleAppender, Priority> entry : consoleAppenders.entrySet()) { entry.getKey().setThreshold(entry.getValue()); } } }