在Spark作业中不会抑制Hive INFO日志

时间:2018-05-11 11:33:45

标签: apache-spark logging hive

有两种方法可以控制日志记录。一个是通过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日志。但我想我离它不远了。如果有人知道这可能是什么问题,请告诉我。

2 个答案:

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