您的位置:58编程 > gradle日志配置 Gradle 日志

gradle日志配置 Gradle 日志

2023-05-30 11:33 Gradle教程

gradle日志配置 Gradle 日志

gradle日志配置 Gradle 日志

gradle日志配置

日志是构建工具的主要界面。如果日志太多,真正的警告和问题容易被隐藏。另一方面,如果出了错,你需要找出相关的信息。Gradle 定义了6个日志级别,如表 18.1,“日志级别”所示。除了那些您通过可能会看到的日志级别之外,有两个 Gradle 特定日志级别。这两个级别分别是 QUIET 和 LIFECYCLE. 默认使用后面的这个日志级别,用于报告构建进度。

表 18.1. 日志级别

Level 用于
ERROR 错误消息
QUIET 重要的信息消息
WARNING 警告消息
LIFECYCLE 进度信息消息
INFO 信息性消息
DEBUG 调试消息

选择一个日志级别

您可以使用表 18.2,“日志级别的命令行选项”中所示的命令行开关来选择不同的日志级别。在表 18.3,“栈跟踪的命令行选项”中,你可以看到影响栈跟踪日志的命令行开关。

表 18.2. 日志级别的命令行选项

选项 输出日志级别
没有日志选项 LIFECYCLE 及更高
--quiet QUIET 及更高
--info INFO 及更高
--debug DEBUG 及更高

表 18.3. 栈跟踪的命令行选项

选项 意义
没有栈跟踪选项 构建错误(如编译错误)时没有栈跟踪打印到控制台。只有在内部异常的情况下才打印栈跟踪。如果选择 DEBUG 日志级别,则总是输出截取后的栈跟踪信息。
--stacktrace 输出截断的栈跟踪。我们推荐使用这一个选项而不是打印全栈的跟踪信息。Groovy 的全栈跟踪非常冗长 (由于其潜在的动态调用机制,然而他们通常不包含你的的代码中哪里错了的相关信息。)
--full-stacktrace 打印全栈的跟踪信息。

编写自己的日志消息

在构建文件,打印日志的一个简单方法是把消息写到标准输出中。Gradle 会把写到标准输出的所有内容重定向到它的日志系统的 QUIET 级别中。

使用标准输出写日志

build.gradle

println "A message which is logged at QUIET level"  

Gradle 还提供了一个 logger 属性给构建脚本,它是一个 Logger 实例。该接口扩展自 SLF4J的 Logger 接口,并添加了几个 Gradle 的特有方法。下面是关于如何在构建脚本中使用它的示例:

编写自己的日志消息

build.gradle

logger.quiet("An info log message which is always logged.")
logger.error("An error log message.")
logger.warn("A warning log message.")
logger.lifecycle("A lifecycle info log message.")
logger.info("An info log message.")
logger.debug("A debug log message.")
logger.trace("A trace log message.")  

您也可以在构建脚本中通过其他使用的类挂钩到 Gradle 的日志系统中(例如 buildSrc 目录中的类)。只需使用一个 SLF4J 的 logger 对象。你可以在构建脚本中,用与内置的 logger 同样的方式使用这个 logger。

使用 SLF4J 编写日志消息

build.gradle

import org.slf4j.Logger
import org.slf4j.LoggerFactory
Logger slf4jLogger = LoggerFactory.getLogger("some-logger")
slf4jLogger.info("An info log message logged using SLF4j")  

使用外部工具和库记录日志

Gradle 内部使用 Ant 和 Ivy。它们都有自己的日志系统。Gradle 将其日志输出重定向到 Gradle 的日志系统。从 Ant/Ivy 的日志级别到 Gradle 的日志级别是一对一的映射,除了 Ant/Ivy 的 TRACE 级别之外,它是映射到 Gradle 的 DEBUG 级别的。这意味着默认情况下, Gradle 日志级别将不会显示任何 Ant/Ivy 的输出,除非是错误或警告信息。

有很多的工具仍然在使用标准输出日志记录。默认情况下,Gradle 将标准输出重定向到QUIET日志级别,把标准错误输出重写向到 ERROR 级别。这种行为是可配置的。Project 对象提供了一个LoggingManager,它允许您在计算构建脚本时,修改标准输出和错误重定向的日志级别。

配置标准输出捕获

build.gradle

logging.captureStandardOutput LogLevel.INFO
println "A message which is logged at INFO level"  

为能在任务执行过程中更改标准输出或错误的日志级别,task 也提供了一个 LoggingManager。

对任务配置标准输出捕获

build.gradle

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

Gradle 还提供了对 Java Util Logging,Jakarta Commons Logging 和 Log4j 的日志工具的集成。你生成的类使用这些日志记录工具输出的任何日志消息,都将被重定向到 Gradle 的日志系统。

改变 Gradle 日志

您可以用您自己的 logging UI 大量地替换 Gradle 的。你可以这样做,例如,如果您想要以某种方式自定义 UI ——以输出更多或更少的信息,或修改日志格式您可以使用 Gradle.useLogger() 方法替换这个 logging。它可以在构建脚本,或 init 脚本,或通过内嵌的 API 访问。请注意它完全禁用 Gradle 的默认输出。下面是一个示例,在 init 脚本中修改任务执行和构建完成的日志打印。

自定义 Gradle 日志

init.gradle

useLogger(new CustomEventLogger())
class CustomEventLogger extends BuildAdapter implements TaskExecutionListener {
    public void beforeExecute(Task task) {
        println "[$task.name]"
    }
    public void afterExecute(Task task, TaskState state) {
        println()
    }
    public void buildFinished(BuildResult result) {
        println "build completed"
        if (result.failure != null) {
            result.failure.printStackTrace()
        }
    }
}  

gradle -I init.gradle build 的输出结果

> gradle -I init.gradle build
[compile]
compiling source
[testCompile]
compiling test source
[test]
running unit tests
[build]
build completed  

你的 logger 可以实现下面列出的任何监听器接口。当你注册一个 logger 时,只能替换它实现的接口的日志记录。其他接口的日志记录是不变的。

  • BuildListener
  • ProjectEvaluationListener
  • TaskExecutionGraphListener
  • TaskExecutionListener
  • TaskActionListener
阅读全文
以上是58编程为你收集整理的gradle日志配置 Gradle 日志全部内容。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
相关文章
  • idea alt+enter IDEA 最特殊的快捷键 Alt + Enter 介绍

    idea alt+enter IDEA 最特殊的快捷键 Alt + Enter 介绍

    说明这是一个非常特殊的快捷键,有必要拿出来单独讲。强烈注意:此快捷键跟光标所在位置有着很严重关联关系,光标放的位置不同,...

  • eclipse debug配置 Eclipse Debug 配置

    eclipse debug配置 Eclipse Debug 配置

    创建和使用 Debug 配置Eclipse Debug 配置类似于运行配置但它是用于在调试模式下开启应用。打开 Debug 配置对话框步骤为:RunDeb...

  • vimscript教程 Vimscript 文档

    vimscript教程 Vimscript 文档

    我们的Potion插件有着许多有用的功能,但是无人知晓这一点,除非我们留下了文档!Vim自身的文档非常棒。它不仅是详细地,而且也...

  • redis set命令 Redis SET 命令

    redis set命令 Redis SET 命令

    Redis SET 命令Redis 字符串(string) Redis SET 命令用于设置给定 key 的值。如果 key 已经存储其他值, SET 就覆写旧值,且无视...

  •  PostgreSQL table_constraints

    PostgreSQL table_constraints

    视图table_constraints包含属于特定表的所有约束,这些表要满足的条件是:当前用户拥有表或者是当前用户在表上具有某种除SELECT...

  •  PostgreSQL 缺陷报告指南

    PostgreSQL 缺陷报告指南

    5.1.标识缺陷5.2.报告什么当你在PostgreSQL中找到一个缺陷时,我们希望听到关于它的事情。你的缺陷报告在使得PostgreSQL更可靠的...

  •  PostgreSQL 数据定义

    PostgreSQL 数据定义

    目录5.1. 表基础5.2. 默认值5.3. 生成列5.4. 约束5.4.1. 检查约束5.4.2. 非空约束5.4.3. 唯一约束5.4.4. 主键5.4.5. 外键5.4.6. ...

  •  PostgreSQL pg_extension

    PostgreSQL pg_extension

    目录pg_extension存储有关已安装扩展的信息。有关扩展的细节请参见第37.17节。表51.22.pg_extension Columns列类型描述 oidoid行...

  •  PostgreSQL pg_shdescription

    PostgreSQL pg_shdescription

    目录pg_shdescription存储共享数据库对象的可选描述(注释)。描述可以通过COMMENT命令操作,并且可以使用psql的d命令来查看。另...

  •  PostgreSQL 给翻译者

    PostgreSQL 给翻译者

    54.1.给翻译者54.1.1. 需求54.1.2. 概念54.1.3. 创建并维护消息目录54.1.4. 编辑 PO 文件 PostgreSQL程序(服务器和客户端)可以...

© 2024 58编程 58biancheng.com 版权所有 联系我们
桂ICP备12005667号-32 Powered by CMS