package org.handwerkszeug.riak.util; import java.util.ArrayList; import java.util.List; import org.slf4j.LoggerFactory; import ch.qos.logback.classic.Level; import ch.qos.logback.classic.Logger; import ch.qos.logback.classic.LoggerContext; /** * @author taichi */ public class LogbackUtil { public interface Action { void execute() throws Exception; } public static void suppressLogging(Action action, Class<?>... classes) throws Exception { suppressLogging(Level.INFO, action, classes); } public static void suppressLogging(Level newLevel, Action action, Class<?>... classes) throws Exception { LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory(); List<Level> levels = new ArrayList<Level>(); for (Class<?> c : classes) { Logger logger = lc.getLogger(c); Level current = logger.getLevel(); levels.add(current); logger.setLevel(newLevel); } try { action.execute(); } finally { for (int i = 0, l = levels.size(); i < l; i++) { Class<?> c = classes[i]; Logger logger = lc.getLogger(c); logger.setLevel(levels.get(i)); } } } }