0

我正在使用 Github ( https://github.com/connecta-solutions/connecta-framework ) 和 Travis ( https://travis-ci.org/connecta-solutions/connecta-framework ) 来托管和构建一个开放式-我的源项目,它使用 Apache Metamodel 作为其依赖项之一。

我没有进行很多单元测试,但是使用 Metamodel 的功能的特定测试生成的日志是巨大的,并且通过了 Travis 确定的 4MB 日志大小,因此它退出构建并显示以下消息:

The log length has exceeded the limit of 4 MB (this usually means that the test suite is raising the same exception over and over).

The job has been terminated

我得到的大部分日志都是来自 Metamodel 内 Comparator 的不重要的调试消息,通常会给出以下输出:

18:18:23.519 [main] DEBUG o.a.metamodel.util.ObjectComparator - compare(Sul,50)
18:18:23.519 [main] INFO  o.a.metamodel.util.ObjectComparator - Using ToStringComparator because no apparent better comparison method could be found
18:18:23.519 [main] DEBUG org.apache.metamodel.util.BaseObject - SUM(csv_cities.csv.vendas).hashCode()
18:18:23.519 [main] DEBUG org.apache.metamodel.util.BaseObject - obj is null, returning constant
18:18:23.519 [main] DEBUG org.apache.metamodel.util.BaseObject - obj is null, returning constant
18:18:23.519 [main] DEBUG org.apache.metamodel.util.BaseObject - obj is a regular object, returning hashCode
18:18:23.519 [main] DEBUG org.apache.metamodel.util.BaseObject - obj is a regular object, returning hashCode
18:18:23.519 [main] DEBUG org.apache.metamodel.util.BaseObject - obj is a regular object, returning hashCode
18:18:23.519 [main] DEBUG org.apache.metamodel.util.BaseObject - obj is null, returning constant
18:18:23.519 [main] DEBUG org.apache.metamodel.util.BaseObject - obj is null, returning constant
18:18:23.519 [main] DEBUG o.a.metamodel.util.EqualsBuilder - append(false)
18:18:23.519 [main] DEBUG o.a.metamodel.util.EqualsBuilder - append(true)
18:18:23.519 [main] DEBUG o.a.metamodel.util.ObjectComparator - compare(Sul,50)
18:18:23.519 [main] INFO  o.a.metamodel.util.ObjectComparator - Using ToStringComparator because no apparent better comparison method could be found
18:18:23.519 [main] DEBUG org.apache.metamodel.util.BaseObject - SUM(csv_cities.csv.vendas).hashCode()
18:18:23.519 [main] DEBUG org.apache.metamodel.util.BaseObject - obj is null, returning constant
18:18:23.519 [main] DEBUG org.apache.metamodel.util.BaseObject - obj is null, returning constant
18:18:23.519 [main] DEBUG org.apache.metamodel.util.BaseObject - obj is a regular object, returning hashCode
18:18:23.519 [main] DEBUG org.apache.metamodel.util.BaseObject - obj is a regular object, returning hashCode
18:18:23.519 [main] DEBUG org.apache.metamodel.util.BaseObject - obj is a regular object, returning hashCode
18:18:23.519 [main] DEBUG org.apache.metamodel.util.BaseObject - obj is null, returning constant
18:18:23.519 [main] DEBUG org.apache.metamodel.util.BaseObject - obj is null, returning constant
18:18:23.519 [main] DEBUG o.a.metamodel.util.EqualsBuilder - append(false)
18:18:23.519 [main] DEBUG o.a.metamodel.util.EqualsBuilder - append(true)

理想的情况是 Travis 以某种方式接受了这一点,因为当您遇到问题时,不重要的日志很快就会变得重要。无论如何,我尝试降低日志级别以仅获取警告和错误,并传递 log4j 的参数来执行此操作,如下所示:

mvn test -Dorg.slf4j.simpleLogger.defaultLogLevel=warn

后来我意识到,Logback 是这个 Metamodel 功能的日志引擎,我发现不可能像 Log4j 中那样使用参数来降低 Logback 的日志级别。但是我没有找到删除 logback 并使用我用于整个应用程序的标准记录器的方法,然后我可以控制它尝试输出消息的级别。

这是 Travis CI 的最后一句话吗?有没有办法保留所有日志,即使超过 4MB 的日志大小?

如果没有,我怎样才能只删除 Metamodel 中日志的这个不重要部分?

将整个日志保持在开发模式,并在 Travis 构建中忽略它是完美的,但如果我不能,我可以永远忽略这部分日志,如果别无选择。

4

1 回答 1

1

尝试通过放置在项目中的配置文件来调整特定命名空间(例如整体org.apache.metamodel)的日志记录。log4j.xmlsrc/test/resources

可以在元模型代码库中找到一个示例:https ://github.com/apache/metamodel/blob/060884c17d1c5c35348d2cb675bed1c404013579/jdbc/src/test/resources/log4j.xml#L12

于 2016-12-27T11:58:13.760 回答