自定义Gradle日志记录

3
我的公司使用Buildkite作为我们的CI服务。当CI服务器触发构建时,所有构建日志都会被发送到Buildkite并通过UI提供。这很有用,因为它允许我们检查构建失败的原因。
Buildkite有一个功能,可以从格式化的日志中创建可折叠组。
--- Compiling
logs after this point will be in a collapsible group named 'Compiling'

--- Testing
logs after this point will be in a collapsible group named 'Testing'

我如何在gradle构建过程中添加自定义日志记录,以输出这些“组”?我想为编译/装配、运行单元测试等设置一个组。

我考虑添加执行日志记录的任务,并使它们成为内置任务的依赖项,但我不确定如何做到这一点,或者这是否是一个好主意。

1个回答

3
我是使用 Gradle 2.12 并从 Logging doc 上找到一个例子。该示例不使用 Android Studio 或 BuildKite,但我相信这将有助于基本问题。
给定一个典型 Java 项目的简单 build.gradle 文件:
apply plugin: 'java'

repositories {
    mavenCentral()
}

dependencies {
    testCompile 'junit:junit:4.11'
}

compileJava << { println "TRACER example log from compileJava" }
compileTestJava << { println "TRACER example log from compileTestJava" }

test << { println "TRACER example log from test" }

还有一个 init.gradle 文件:

useLogger(new CustomEventLogger())

class CustomEventLogger extends BuildAdapter implements TaskExecutionListener {

    public void beforeExecute(Task task) {
        if (task.name ==~ "compileJava") {
            println "--- Compiling"
        } else if (task.name == "test") {
            println "--- Testing"
        }
    }

    public void afterExecute(Task task, TaskState state) {}

    public void buildFinished(BuildResult result) {}
}

然后这个命令行:

$ gradle -I init.gradle test

产生以下输出:
--- Compiling
TRACER example log from compileJava
TRACER example log from compileTestJava
--- Testing
TRACER example log from test

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接