Как я могу подавить журналы INFO в клиентском приложении HBase?

Я пишу консольное приложение Java, которое обращается к HBase, и я не могу понять, как избавиться от всех раздражающих сообщений INFO:

13/05/24 11:01:12 INFO zookeeper.ZooKeeper: Client environment:zookeeper.version=3.4.5-1392090, built on 09/30/2012 17:52 GMT
13/05/24 11:01:12 INFO zookeeper.ZooKeeper: Client environment:host.name=10.1.0.110
13/05/24 11:01:12 INFO zookeeper.ZooKeeper: Client environment:java.version=1.7.0_15
13/05/24 11:01:12 INFO zookeeper.ZooKeeper: Client environment:java.vendor=Oracle Corporation
13/05/24 11:01:12 INFO zookeeper.ZooKeeper: Client environment:java.home=/Library/Java/JavaVirtualMachines/jdk1.7.0_15.jdk/Contents/Home/jre

и т.д...

Я пробовал несколько разных вещей из самого клиентского кода, но ни один из очевидных способов не работал у меня.

Это пример того, что не сработало:

Logger log = Logger.getLogger("log4j.logger.org.apache.zookeeper");
log.setLevel(Level.WARN);

Ответ 1

Вы можете избавиться от регистрации пакетов по одному, например:

Logger.getLogger("org.apache.zookeeper").setLevel(Level.WARN);
Logger.getLogger("org.apache.hadoop.hbase.zookeeper").setLevel(Level.WARN);
Logger.getLogger("org.apache.hadoop.hbase.client").setLevel(Level.WARN);

Или просто манипулируйте корнеологом:

Logger.getRootLogger().setLevel(Level.WARN);

Примечание: проверено на HBase 0.94.5

Ответ 2

Еще одна вещь, которую нужно сделать, - это изменить файл $HBASE_HOME/conf/log4j.properties, чтобы отключить журналы. Лично я считаю, что это лучший подход, потому что он меняет уровень журнала как на сервере, так и на клиенте.

Как это сделать?

  • На сервере, где установлен hbase, перейдите в $HBASE_HOME/conf
  • откройте файл log4j.properties
  • измените конфигурацию по мере необходимости

Если вы не слишком много знаете о файле конфигурации log4j, вы можете узнать это или просто вставить следующую строку

  • log4j.threshold = WARN

Такая конфигурация будет печатать только сообщение WARNING, вы можете использовать любой уровень, который вы хотите.

Надеюсь, это поможет.

Ответ 3

log4j.logger.org.apache.zookeeper=WARN
log4j.logger.org.apache.hadoop.hbase.zookeeper=WARN
log4j.logger.org.apache.hadoop.hbase.client=WARN

в log4j.properties