2016-05-17 111 views
6

我正在Scala中使用SBT构建它的Spark应用程序。 Spark创建非常详细的日志记录,我想在测试运行时忽略它。log4j.properties在运行sbt测试时忽略

我有一个log4j.properties文件在src /测试/资源设置,以及SRC /主/资源具有以下内容:

# Set everything to be logged to the console 
log4j.rootCategory=INFO, console 
log4j.appender.console=org.apache.log4j.ConsoleAppender 
log4j.appender.console.layout=org.apache.log4j.PatternLayout 
log4j.appender.console.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{10}: %m%n 

# Settings to quiet third party logs that are too verbose 
log4j.logger.akka=ERROR 
log4j.logger.Remoting=ERROR 
log4j.logger.org.apache.spark=ERROR 
log4j.logger.org.eclipse.jetty=ERROR 

当运行与sbt test应用程序或运行一个完整应用程序,它仍然正常运行,但仍然记录所有与Spark相关的INFO级别语句

有没有我在文件配置中丢失的东西,还是我需要明确告诉sbt加载log4j.properties?我应该一起尝试一种新方法吗?

我也受到限制,因为应用程序需要能够在应用了日志记录设置的我们的CI环境和其他用户计算机上运行。这意味着需要从应用程序的git仓库中包含和识别这些设置。

+0

你最终解决了这个问题吗? (因为我处于同一情况) – daveoncode

回答

0

请将您的log4j.properties复制到$SPARK_HOME/conf目录。那是火花装置使用的那个

+0

设置需要存储在本地应用程序目录本身,以便它们可以在其他用户和我们的CI环境之间共享。强制Spark的特定全局日志记录设置不是一个选项 – lobobabysaurus

+0

我提到的是标准方法:它是* a *正确的。所以你显然有*额外*的要求(*没有在OP *中提到)。我可能会在稍后看看如何解决您的具体问题。 – javadba