在第一节,我们使用到了gradle -q hello命令行来运行Hello World,并对Hello World进行了简单的分析,了解到 gradle -q hello 的意思是要执行的build.gradle脚本中定义的名为hello的Task,-q参数用于控制gradle输出的日志级别,以及哪些日志可以输出被看到。这节我们讲一些Gradle日志相关的知识。
一、Gradle 日志级别
Gradle 日志级别和平时我们开发Android时的日志级别差不多。但是除了一些通用的级别之外,Gradle还增加了Quite和Lifecycle两个级别,用于标记重要以及进度级别的日志信息。具体如下:
- ERROR:错误信息
- QUITE:重要信息
- WARNING:警告信息
- LIFECYCLE:进度信息
- INFO:一般信息
- Debug:调试信息
如果我们想要显示的日志等级,就可以在task之前使用-首字母即可实现控制。
例如:
- -q 表示输出QUIET及更高级别的日志。
- -i 表示输出INFO及更高级别的日志。
二、Gradle 输出错误堆栈信息
使用Gradle构建的时候,经常会遇到构建失败,这时候我们就需要通过日志去分析和解决。除了我们在上面提到的日志信息之外,Gradle还支持堆栈信息的打印,它能够帮助我们很好的定位和分析问题。
默认情况下,堆栈信息的输出是关闭的,需要我们通过命令行的堆栈信息开关打开它,这样我们在构建失败的时候,能看到输出的堆栈信息,便于分析和解决问题。下面是错误堆栈的开关选项说明:
- 无选项:没有堆栈信息输出
- -s:输出关键性的堆栈信息
- -S:输出全部堆栈信息
一般的,我们推荐使用-s,因为-S的堆栈太长太多了,不方便查询和分析,-s相对精简,能帮助定位和解决大部分问题。
三、使用Gradle自定义日志信息
在编写Gradle脚本时,我们有时候还需要输出一些日志,来验证我们的逻辑是否正确,这时我们可以使用Gradle提供的日志功能。
通常我们使用的时print系列的方法,把日志信息输出到标准的控制台输出流(它被Gradle定为QUIET级别的日志):
println '输出一段日志信息'
除了print系列方法之外,我们也可以使用logger灵活的输出不同级别的日志:
logger.quiet('quiet 日志信息')logger.error('quiet 日志信息') ......
其中logger是调用的Project的getLogger方法获取的Logger对象的实例。