从maven运行测试时禁用scalatest日志记录语句

时间:2014-12-01 00:42:58

标签: scalatest

禁用对scalatest log4j消息的登录的方法是什么:

log4j.properties如下:

log4j.rootLogger=INFO,CA,FA

#Console Appender
log4j.appender.CA=org.apache.log4j.ConsoleAppender
log4j.appender.CA.layout=org.apache.log4j.PatternLayout
log4j.appender.CA.layout.ConversionPattern=%d{HH:mm:ss.SSS} %p %c: %m%n
log4j.appender.CA.Threshold = INFO


#File Appender
log4j.appender.FA=org.apache.log4j.FileAppender
log4j.appender.FA.append=false
log4j.appender.FA.file=target/unit-tests.log
log4j.appender.FA.layout=org.apache.log4j.PatternLayout
log4j.appender.FA.layout.ConversionPattern=%d{HH:mm:ss.SSS} %p %c{1}: %m%n
log4j.appender.FA.Threshold = INFO

..
log4j.logger.org.scalatest=WARN

但是我们看到INFO级别的scalatest log4j消息:

2014-11-30 14:25:57,263 INFO  [ScalaTest-run-running-DiscoverySuite] Configuration.deprecation (Configuration.java:warnOnceIfDeprecated(840)) - hadoop.native.lib is deprecated. Instead, use io.native.lib.available
2014-11-30 14:25:57,493 INFO  [ScalaTest-run-running-DiscoverySuite] hbase.HBaseCommonTestingUtility (HBaseTestingUtility.java:startMiniCluster(840)) - Starting up minicluster with 1 master(s) and 2 regionserver(s) and 2 datanode(s)
2014-11-30 14:25:57,499 INFO  [ScalaTest-run-running-DiscoverySuite] hbase.HBaseCommonTestingUtility (HBaseTestingUtility.java:setupClusterTestDir(390)) - Created new mini-cluster data directory: /shared/hwspark/target/

3 个答案:

答案 0 :(得分:6)

或者,你可以在一个测试中的任何地方抛出这段代码,

org.slf4j.LoggerFactory.getLogger(org.slf4j.Logger.ROOT_LOGGER_NAME)
  .asInstanceOf[ch.qos.logback.classic.Logger]
  .setLevel(ch.qos.logback.classic.Level.WARN)

将所有日志记录设置为WARN级别。

答案 1 :(得分:1)

这些日志消息实际上并未由ScalaTest打印,而是由您在ScalaTest测试中使用的内容打印。 “ScalaTest”出现在它们中的原因是ScalaTest确实在执行套件和测试时更改了线程的名称,因此如果某人有一个永久挂起并进行线程转储以进行调查的套件,则更明显的是什么是测试和套件导致运行挂起。 Log4J似乎在方括号中打印出线程名称,因此可以提供有关这些日志消息来源的提示。

答案 2 :(得分:1)

在我的情况下,它是slick.relational我用ScalaTest-run-running -....信息中报告的类查看了类路径,并在导入的包中找到了该类并将该特定包添加到logback .xml为

<logger name="slick.relational" level="INFO"/>

在您的情况下,搜索HBaseTestingUtility或那里报告的其他类,以查找其中包含该jar的jar,然后从包前缀中计算出您的logback logger名称。