【问题标题】:Travis max log size & omitting library generated logTravis 最大日志大小和省略库生成的日志
【发布时间】:2017-05-11 05:02:31
【问题描述】:

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

【问题讨论】:

    标签: maven log4j travis-ci logback apache-metamodel


    【解决方案1】:

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

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

    【讨论】:

    • 有趣的是,它不起作用,因为我的元模型仍在使用 Logback,但在您的链接中,元模型的依赖项仅指向 log4j。我将调查哪个模块带来了这种依赖关系并尝试修复它......
    • 我排除了所有可以用来代替 lo4j 的记录器模块,现在它可以工作了。非常感谢:)
    猜你喜欢
    • 1970-01-01
    • 2018-07-29
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-14
    • 1970-01-01
    • 2012-01-10
    相关资源
    最近更新 更多