有两种方法可以控制日志记录。一个是通过log4j.properties,另一个是通过编程方式控制它。我试过了两个: 通过log4j.properties文件:
# disable logging for spark libraries
log4j.additivity.org=false
log4j.additivity.org.apache=false
#log4j.logger.org.apache=ERROR, NOAPPENDER
log4j.logger.org=ERROR, NOAPPENDER
并通过编程方式:
org.apache.log4j.Logger logger = LogManager.getLogger(pkgName);
logger.setLevel(Level.ERROR);
我能够抑制其他日志,但仍有少量INFO日志仍在打印中:
INFO metastore: Connected to metastore.
INFO Hive: Registering function addfunc ca.nextpathway.hive.UDFToDate
和
INFO ContextHandler: Started o.s.j.s.ServletContextHandler@17f9344b{/static,null,AVAILABLE}
我想要取消除少数特定包之外的所有INFO日志。但我想我离它不远了。如果有人知道这可能是什么问题,请告诉我。
答案 0 :(得分:1)
尝试使用以下内容。这应该有用。
Logger.getLogger("org.apache.hadoop.hive").setLevel(Level.ERROR);
答案 1 :(得分:0)
代码 https://github.com/apache/hive/blob/master/ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java有一个错误。它会如下创建LOg:
Logger LOG = LoggerFactory.getLogger("hive.ql.metadata.Hive");
因此,带有org.apache.hadoop.hive的常规过滤器不起作用。相反,您必须使用“ hive.ql.metadata.Hive”。例如:
org.apache.log4j.Logger.getLogger("hive.ql.metadata.Hive").setLevel(Level.WARN);