В Log4j2 Регистраторы не имеют прикрепленных к ним приложений или фильтров. Вместо этого они связаны с LoggerConfig. У LoggerConfig есть метод setLevel, но обновление его фактически не будет изменять уровень любого Loggers, который его использует. Для этого вам нужно вызвать метод updateLoggers для LoggerContext.
LoggerContext loggerContext = (LoggerContext) LogManager.getContext(false);
Configuration config = loggerContext.getConfiguration();
// Note that the next method gets the LoggerConfig that best matches the
// Logger name. If no logger
LoggerConfig loggerConfig = config.getLoggerConfig(loggerName);
Configurator.setLevel(loggerConfig, newLevel);
loggerContext.updateLoggers();
Что касается Appenders, то Appenders не привязаны напрямую к LoggerConfig. Вместо этого они завертываются AppenderControl. Вы можете получить этот список Appenders, прикрепленный к LoggerConfig, вызвав getAppenderRefs. Затем вы можете удалить каждый append один за другим.
Однако делать это не рекомендуется. Добавление и удаление приложений, подобных этому, действительно существует только для поддержки модульного тестирования Log4j. Проблема заключается в том, что, пока вы это делаете, система все еще регистрируется, и вы попадете в состояние, в котором события журнала потеряны, потому что никакие приложения не настроены. Рекомендуемый подход в Log4j заключается в создании новой конфигурации, а затем
Configurator.initialize(Configuration);
См. Руководство по миграции log4j2. https://logging.apache.org/log4j/2.x/manual/migration.html – ares
Спасибо, но эта ссылка, которую я посетил, не отвечает на мой вопрос - @ares :) Я застрял в той части, где я не могу заменить «getAllAppenders» и т. д. –