Общепринятой практикой является получение регистраторов через static- factory (хотя он полностью нарушает принцип DI). И на самом деле это прекрасно, если вы не хотите полностью избавиться от регистрации. во время выполнения модульных тестов.
Мне удалось отключить log4j logging, используя следующее заклинание:
List<Logger> loggers = Collections.<Logger>list(LogManager.getCurrentLoggers());
loggers.add(LogManager.getRootLogger());
for (Logger logger : loggers) {
logger.setLevel(Level.OFF);
}
Вначале он печатает некоторую информацию о настройке на консоли:
log4j: reset attribute= "false".
log4j: Threshold ="null".
log4j: Retreiving an instance of org.apache.log4j.Logger.
log4j: Setting [test] additivity to [false].
log4j: Level value for test is [DEBUG].
...
Как отключить его, программно, при запуске пакета unit-test?