Gradle-日志

作者: 佛系编码 | 来源:发表于2019-08-23 11:10 被阅读0次

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

日志级别

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

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

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

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

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

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

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

logging.captureStandardOutput LogLevel.INFO
println '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
输出自己的日志-默认.png

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

gradle -b logger.gradle -d log
输出自己的日志-d.png

更改日志内容

可以通过 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 :test
beforeExecute-> test
级别:quite
级别:error
afterExecute -> test succeed?true
build completed
1 actionable task: 1 executed

End

欢迎关注

相关文章

  • Gradle-日志

    日志就像是构建工具的 UI,如果输出太混乱,真正的警告和错误很容易就被忽略了。Gradle 定义了 6 种日志级别...

  • Android Studio 使用本地 gradle 配置

    打开 setting->gradle->gradle-wrapper.properties 将 改成 Projec...

  • mac下Android studio gradle 配置

    1、Android Studio应用程序处右键->显示包内容,在Contents->gradle->gradle-...

  • Android studio中.gradle出现问题

    如题,如果studio中出现如图所示的问题 a)首先监测studio->Project->gradle->wrap...

  • Gradle-命令笔记

    用来分析依赖包的结构: apply plugin: 'project-report' gradle htmlDep...

  • Gradle-踩坑

    在安卓开发中肯定会使用到第三方库,gradle提供了一种快捷的依赖方式,但在开发中遇到了下面这种情况我们要怎么解决...

  • Gradle-构建脚本

    Gradle 构建配置脚本常识科普 构建语言 Gradle提供了一种领域特定语言,目前同时支持 Groovy 和 ...

  • AS版本不一致可能出现编译失败情况,解决方法如下

    1.用当前版本的AS创建一个新项目,等待编译完成后;2.打开该新项目目录下面的gradle->wrapper->g...

  • maven/gradle-依赖导入

    首先来看看Maven项目怎么添加依赖:image.png 上图中红圈部分的pom.xml文件就是可以添加依赖的地方...

  • Gradle-构建javadoc文档

    ### 简介: 如果你是一个库开发者,那么必不可少的就是像对使用者提供sdk文档,这篇讲述使用gradle来构建j...

网友评论

    本文标题:Gradle-日志

    本文链接:https://www.haomeiwen.com/subject/hzezsctx.html