2016-12-26 64 views
0

我使用Github(https://github.com/connecta-solutions/connecta-framework)和Travis(https://travis-ci.org/connecta-solutions/connecta-framework)来托管和构建我的开源项目,该项目使用Apache Metamodel作为其依赖项之一。Travis最大日志大小和省略库生成日志

我没有进行很多单元测试,但是使用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 

大多数日志,我得到的是来自内部的元模型,通常给出以下输出的比较不重要的调试消息:

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) 

理想的情况是,特拉维斯莫名其妙地接受了这个,不重要的日志可以很快成为当您遇到问题时,您很重要。无论如何,我试图减少日志级别来获得唯一的警告和错误,传递参数的log4j的这样做,是这样的:

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

我后来才意识到是的logback是这个元模型功能日志引擎,并且我发现用Log4j中的参数来减少Logback的日志级别是不可能的。然而,我没有找到一种方法来删除logback并使用我用于整个应用程序的标准记录器,然后我可以控制它尝试输出消息的级别。

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

如果没有,我该如何删除Metamodel内部的这个不重要的部分?

保持在开发状态的总体日志,只是忽略它在特拉维斯构建将是完美的,但如果我不能,我可以永远忽略日志的这部分,如果没有选择。

回答

1

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

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

+0

好的,Tomas!我现在就试试看:) – ViniciusPires

+0

有趣的是,它不起作用,因为我的Metamodel仍在使用Logback,但在您的链接中,Metamodel的依赖关系仅指向log4j。我将调查哪个模块引入了这种依赖关系,并尝试修复它... – ViniciusPires

+0

我排除了可能正在使用的所有记录器模块,而不是lo4j,现在它可以工作。非常感谢 :) – ViniciusPires

相关问题