如何在HBase客户端应用程序中抑制INFO日志?

我正在编写一个访问HBase的Java控制台应用程序,我无法弄清楚如何摆脱所有恼人的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); 

您可以逐个删除包,例如:

 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); 

或者只是简单地操纵rootlogger:

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

注意:在HBase 0.94.5上测试

另一件事是更改$ HBASE_HOME / conf / log4j.properties文件以禁用日志。 我个人认为这是最好的方法,因为它改变了服务器和客户端的日志级别。

怎么做?

  1. 从安装了hbase的服务器,转到$ HBASE_HOME / conf
  2. 打开log4j.properties文件
  3. 根据需要更改配置

如果您对log4j配置文件了解不多,可以了解它,或者只是插入以下行

  • log4j.threshold = WARN

这样的配置只会打印WARNING消息,你可以使用你想要的任何级别。

希望这可以提供帮助。

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

在log4j.properties中