2014-12-01 2 views
4

Что такое метод, чтобы отключить ведение журнала на scalatest log4j сообщений:Отключить заявления лесозаготовительных scalatest при выполнении тестов из мавена

The 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/ 
+0

Любое разрешение этой проблемы? Я тоже страдаю от этого. – Malcolm

+0

@Malcolm Вам необходимо обеспечить, чтобы log4j.properties, который вы хотите использовать, находится в первом каталоге пути к классам. – javadba

+0

благодарит за ответ! Вы случайно использовали sbt для этого? Если да, то каким образом можно изменить путь к классам? Я попытался сделать это с помощью «unmanagedClasspath в Test + = -Dlog4j.configuration = src/main/resources/log4j.properties», но это не сработало. – Malcolm

ответ

1

Эти сообщения журнала фактически не выводимые ScalaTest, но то, что вы используете из ваших тестов ScalaTest. Причина, по которой «ScalaTest» проявляется в них, заключается в том, что ScalaTest изменяет имя потоков при выполнении наборов и тестов, так что если у кого-то есть набор, который вешает навсегда и делает дамп потока для исследования, более очевидно, какие тесты и Suite вызывает зависание. Log4J, похоже, распечатывает имя потока в квадратных скобках, поэтому может дать вам подсказку о том, откуда эти сообщения журнала.

+0

Да, согласен. Я скопирую здесь свой ответ на scalatest ML: я должен был обновить, что да, log4j.properties извлекается из одного из сторонних файлов jar при запуске искры. Это, как вы описываете, не имеет отношения к scalatest. Мне нужно выяснить, как правильно указать файл log4j.properties при запуске maven - вместо того, чтобы log4j просто подбирать то, что он выбирает из какого-то пути в classpath. – javadba

4

В качестве альтернативы, вы можете выбросить этот кусок кода где-нибудь в одном из ваших тестов,

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

который установит все протоколирование в WARN уровне.

Смежные вопросы