我正在使用 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 构建中忽略它是完美的,但如果我不能,我可以永远忽略这部分日志,如果别无选择。