
日志级别
Gradle 的日志 和Android 一样也有多个级别。
| 级别 | 用于 |
|---|---|
| ERROR | 错误消息 |
| QUITE | 重要消息 |
| WARNING | 警告消息 |
| LIFECYCLE | 进度消息 |
| INFO | 信息消息 |
| DEBUG | 调试消息 |
要显示指定级别的日志,可以通过日志开关来控制的,在执行的时候加入下面这些开关即可.
| 开关选项 | 输出的日志级别 |
|---|---|
| 无选项 LIFECYCLE | 及其更高级别 |
| -q 或者 –quite | QUITE |
| -i 或者 –info | INFO |
| -d 或者 –debug | DEBUG |
1 | //在执行 build task时的输出的日志会是 QUITE 级别 |
如果不想每次都在命令行加入参数来指定,可以在 配置文件(gradle.properties) 中修改,值可以是六种的任意一个,不区分大小写
1 | org.gradle.logging.level=(quiet,warn,lifecycle,info,debug) |
或者在脚本中更改级别 ,project 类 提供了 LoggerManager 来管理 日志
1 | logging.captureStandardOutput LogLevel.INFO |
Task 类也提供了这个 LoggerManager 所以在 任务中也是可以配置的;1
2
3
4
5
6task logInfo {
logging.captureStandardOutput LogLevel.INFO
doFirst {
println 'A task message which is logged at INFO level'
}
}
输出堆栈信息
在任务执行出问题的时候,堆栈信息就显得尤为重要了, 然而默认堆栈信息开关是关闭的,只有打开开关才会输出出来。
| 命令行选项 | 用于 |
|---|---|
| 无选项 | 没有堆栈信息输出 |
| -s 或者 –stacktrace | 输出关键堆栈信息 |
| -S 或者 -full-stacktrace | 输出全部堆栈信息 |
一般使用 -s 或者 –stacktrace 输出关键堆栈,输出全部堆栈信息就太多了,不好定位问题。1
gradle build -s
输入自己的日志
通常情况下都是使用 print 系列方法,把日子输出到 控制台(它把 Gradle 定向为 QUITE 级别日志)
1 | println '输出一段日志信息' |
除了 print 系列之外,还可以使用内置的 logger 更灵活的控制输出不同级别的日志。
1 | task log(){ |
新建一个 logger.gradle 添加一个 log Task 运行 log Task
1 | gradle -b logger.gradle log |

如果使用 -d 的话 就是下面这种了。
1 | gradle -b logger.gradle -d log |

更改日志内容
可以通过 Gradle.useLogger()) 方法传入一个自定义的日志对象。
这个对象可以是以下几个监听的派生类
- BuildListener
- TaskExecutionGraphListener
- ProjectEvaluationListener
- TaskExecutionListener
- TaskActionListener
- StandardOutputListener
- TestListener
- TestOutputListener
- DependencyResolutionListener
这里以 任务执行 (TaskExecutionListener ) 为例
1 | task test { |
执行
1 | gradle test |
输出如下
1 | > Task :test |