打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Gradle-日志

日志就像是构建工具的 UI,如果输出太混乱,真正的警告和错误很容易就被忽略了。Gradle 定义了 6 种日志级别,以便于我们识别有用的信息。

日志级别

Gradle 的日志 和Android 一样也有多个级别。

级别用于
ERROR错误消息
QUITE重要消息
WARNING警告消息
LIFECYCLE进度消息
INFO信息消息
DEBUG调试消息

要显示指定级别的日志,可以通过日志开关来控制的,在执行的时候加入下面这些开关即可.

开关选项输出的日志级别
无选项 LIFECYCLE及其更高级别
-q 或者 --quiteQUITE
-i 或者 --infoINFO
-d 或者 --debugDEBUG
//在执行 build task时的输出的日志会是 QUITE 级别    gradle -q build

如果不想每次都在命令行加入参数来指定,可以在 配置文件(gradle.properties) 中修改,值可以是六种的任意一个,不区分大小写

org.gradle.logging.level=(quiet,warn,lifecycle,info,debug)

或者在脚本中更改级别 ,project 类 提供了 LoggerManager 来管理 日志

logging.captureStandardOutput LogLevel.INFOprintln 'A message which is logged at INFO level'

Task 类也提供了这个 LoggerManager 所以在 任务中也是可以配置的;

task logInfo {    logging.captureStandardOutput LogLevel.INFO    doFirst {        println 'A task message which is logged at INFO level'    }}

输出堆栈信息

在任务执行出问题的时候,堆栈信息就显得尤为重要了, 然而默认堆栈信息开关是关闭的,只有打开开关才会输出出来。

命令行选项用于
无选项没有堆栈信息输出
-s 或者 --stacktrace输出关键堆栈信息
-S 或者 -full-stacktrace输出全部堆栈信息

一般使用 -s 或者 --stacktrace 输出关键堆栈,输出全部堆栈信息就太多了,不好定位问题。

gradle build -s

输入自己的日志

通常情况下都是使用 print 系列方法,把日子输出到 控制台(它把 Gradle 定向为 QUITE 级别日志)

println '输出一段日志信息'

除了 print 系列之外,还可以使用内置的 logger 更灵活的控制输出不同级别的日志。

task log(){  doLast{      logger.quiet('quiet 重要消息')      logger.error('error 错误消息')      logger.lifecycle('lifecycler 进度消息')      logger.warn('warn 警告消息')      logger.info('info 消息 信息')      logger.debug('debug 调试信息')    }}

新建一个 logger.gradle 添加一个 log Task 运行 log Task

gradle -b logger.gradle log

如果使用 -d 的话 就是下面这种了。

gradle -b logger.gradle -d log

更改日志内容

可以通过 Gradle.useLogger()
方法传入一个自定义的日志对象。

这个对象可以是以下几个监听的派生类

这里以 任务执行 (TaskExecutionListener ) 为例

task test {    doLast{        logger.quiet "级别:{}","quite"        logger.error "级别:error"    }}//使用指定的日志对象gradle.useLogger(new CustomEventLogger())//自定义日志内容class CustomEventLogger extends BuildAdapter implements TaskExecutionListener {   void beforeExecute(Task task){       println "beforeExecute-> ${task.name}"   }   void afterExecute(Task task,TaskState state){       println "afterExecute -> ${task.name} successed?${state.failure==null}"   }   void buildFinished(BuildResult result){       println "build completed"       if(result.failure){           result.failure.printStackTrace()       }   }}

执行

gradle test

输出如下

> Task :testbeforeExecute-> test级别:quite级别:errorafterExecute -> test succeed?truebuild completed1 actionable task: 1 executed

End

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
一网打尽CodeReview要点(JAVA)
Log4j笔记 第一章 简单用上Log4j
当我们在使用Flask时,如何记录日志
一个著名的日志系统是怎么设计出来的?
Log4j的日志级别--总结(转载) - nirohappy的日志 - 网易博客
这样处理 Python 日志,优雅
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服