@ fatCop ответ в основном правильный. Вы можете начать с log4j2. xml, настроенным как
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn" name="AppName" packages="">
<RegexFilter regex="*database*" onMatch="DENY" onMismatch="DENY"/>
<Appenders>
<RollingFile name="RollingFile" fileName="logs/app.log"
filePattern="logs/app-%d{MM-dd-yyyy}.log.gz">
<PatternLayout>
<pattern>%d %p %c{1.} [%t] %m%n</pattern>
</PatternLayout>
<TimeBasedTriggeringPolicy />
</RollingFile>
</Appenders>
<Loggers>
<Root level="error">
<AppenderRef ref="RollingFile"/>
</Root>
</Loggers>
</Configuration>
Поскольку это использует глобальный фильтр, он ничего не будет регистрировать. Когда вы будете готовы включить ведение журнала, выполните
final LoggerContext loggerContext = LoggerContext.getContext(false);
final Configuration config = loggerContext.getConfiguration();
Filter filter = RegexFilter.createFilter("database", null, false, Result.ACCEPT, RESULT.DENY);
config.setFilter(filter);
. Если вы хотите, чтобы он был отключен, замените фильтр на новый, для которого в матче снова установлено значение DENY.
Обратите внимание, что уровень ведения журнала в регистраторе root не имеет значения, поскольку фильтр принимает или отклоняет только события.