• Gradle-日志


    日志就像是构建工具的 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
    

    执行结果-默认

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

    gradle -b logger.gradle -d log
    

    执行结果-d

    更改日志内容

    可以通过 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

  • 相关阅读:
    IIS配置桌面上的文件报错,可能是含有中文字符
    GridView序号
    图片处理函数(自适应缩略图datatable中添加缩略图像)
    linqtoobject
    数据库存取图片二进制数据
    反射
    jquery
    加干扰字符
    Doc的窗口就创建一个,如果已经存在就激活那个窗口,不存在就建立Doc(转自CSDN)
    VC++中使用内存映射文件处理大文件(转)
  • 原文地址:https://www.cnblogs.com/skymxc/p/gradle-logger.html
Copyright © 2020-2023  润新知