Как динамически включать или отключать один из приложений rootLogger в log4j2?
Как динамически включать или отключать один файл rootLogger в log4j2 по java во время выполнения?
например, я хочу отключить Console Appender:
...
<Loggers>
<Root level="INFO">
<AppenderRef ref="Console"/>
<AppenderRef ref="RollingFile"/>
</Root>
</Loggers>
...
Возможно ли это?
Ответы
Ответ 1
Вы можете программно добавлять или удалять приложение. В вашем случае удалите Console
final LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
final Configuration config = ctx.getConfiguration();
config.getRootLogger().removeAppender("CONSOLE");
ctx.updateLoggers();
Существует LifeCycle интерфейс с методами stop
и start
, но похоже, что вы не можете перезапустить приложение после того как он был остановлен.
Ответ 2
Вы можете добавить фильтр script в консоль appenderref, который проверяет значение системного свойства. Затем просто установите свойство, если вы хотите отключить ведение журнала на консоли. Reset, когда вы хотите, чтобы он снова включился.