自定义 Gradle 日志记录
Custom Gradle Logging
我的公司使用 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'
如何将自定义日志记录添加到将输出这些 'groups' 的 gradle 构建?我想要一组用于 compiling/assembling,一组用于 运行 单元测试等
我考虑过添加执行日志记录的任务并使它们成为内置任务的依赖项,但我不确定该怎么做,或者总体上这是否是个好主意。
我正在使用 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
我的公司使用 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'
如何将自定义日志记录添加到将输出这些 'groups' 的 gradle 构建?我想要一组用于 compiling/assembling,一组用于 运行 单元测试等
我考虑过添加执行日志记录的任务并使它们成为内置任务的依赖项,但我不确定该怎么做,或者总体上这是否是个好主意。
我正在使用 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