自定义Gradle日志记录

时间:2016-05-03 20:24:53

标签: android android-studio gradle buildkite

我公司使用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 个答案:

答案 0 :(得分:2)

我正在使用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