Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Gradle Logging

Gradle Logging

作者头像
acc8226
发布于 2022-05-17 09:23:45
发布于 2022-05-17 09:23:45
95500
代码可运行
举报
文章被收录于专栏:叽叽西叽叽西
运行总次数:0
代码可运行

日志是构建工具的主要“ UI”。 如果太冗长,那么真正的警告和问题很容易被隐藏起来。 另一方面,你需要相关的信息来判断事情是否出了问题。 Gradle 定义了6个日志级别,如日志级别所示。 除了通常可以看到的日志级别之外,还有两个 gradle 特定的日志级别。 这些层次是安静和生命周期。 后者是默认的,用于报告构建进度。

ERROR Error messages

QUIET Important information messages

WARNING Warning messages

LIFECYCLE Progress information messages

INFO Information messages

DEBUG Debug messages

无论使用何种日志级别,都会显示控制台的丰富组件(生成状态和进度区域中的工作)。 在 Gradle 4.0之前,这些富组件只显示在日志级 LIFECYCLE 或更低的级别。

Choosing a log level 选择一个日志级别

可以使用日志级别命令行选项中显示的命令行开关来选择不同的日志级别。 您还可以使用 Gradle.properties 配置日志级别,请参见 Gradle 属性。 在 Stacktrace 命令行选项中,可以找到影响 Stacktrace 日志记录的命令行开关。

Writing your own log messages 写你自己的日志消息

在构建文件中登录的一个简单选项是将消息写入标准输出。 在 QUIET 日志级别,Gradle 将写入标准输出的任何内容重定向到其日志系统。

示例1. 使用 stdout 写日志消息 build.gradle

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
println 'A message which is logged at QUIET level'

Gradle 还为构建脚本提供了一个 Logger 属性,这是 Logger 的一个实例。 该接口扩展了 SLF4J Logger 接口,并添加了一些 Gradle 特定的方法。 下面是一个在构建脚本中如何使用的例子:

build.gradle

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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.')

使用典型的 SLF4J 模式将占位符替换为日志消息中的实际值。

build.gradle

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
logger.info('A {} log message', 'info')

您还可以从构建中使用的其他类(例如 buildSrc 目录中的类)中连接到 Gradle 的日志系统。 只需使用 SLF4J 记录器。 您可以像在构建脚本中使用提供的记录器一样使用这个记录器。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import org.slf4j.LoggerFactory

def slf4jLogger = LoggerFactory.getLogger('some-logger')
slf4jLogger.info('An info log message logged using SLF4j')

Logging from external tools and libraries 从外部工具和库中记录日志

在内部,Gradle 使用 Ant 和 Ivy。 两者都有自己的记录系统。 Gradle 将他们的日志输出重定向到 Gradle 日志系统。 从 ant / ivy 日志级别到 Gradle 日志级别有1:1的映射,但 ant / ivy TRACE 日志级别映射到 Gradle DEBUG 日志级别。 这意味着默认的 Gradle 日志级别不会显示任何 ant / ivy 输出,除非它是一个错误或警告。

现在仍然有许多工具使用标准输出进行日志记录。 默认情况下,Gradle 将标准输出重定向到 QUIET 日志级别,将标准错误重定向到 ERROR 级别。 此行为是可配置的。 项目对象提供了一个 LoggingManager,它允许您在评估构建脚本时更改标准输出或错误重定向到的日志级别。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
logging.captureStandardOutput LogLevel.INFO
println 'A message which is logged at INFO level'

若要在任务执行期间更改标准输出或错误的日志级别,任务还提供 LoggingManager。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
task logInfo {
    logging.captureStandardOutput LogLevel.INFO
    doFirst {
        println 'A task message which is logged at INFO level'
    }
}

还提供了与 javautillogging、 Jakarta Commons Logging 和 Log4j 日志工具包的集成。 您的构建类使用这些日志工具包写入的任何日志消息都将被重定向到 Gradle 的日志系统。

Changing what Gradle logs 修改 Gradle 日志

你可以用自己的日志界面替换 Gradle 的大部分日志界面。 例如,如果您希望以某种方式自定义 UI ——记录更多或更少的信息,或更改格式,则可以这样做。 您可以使用 Gradle.useLogger (java.lang。 对象)方法。 这可以从构建脚本、 init 脚本或通过嵌入 API 访问。 注意,这将完全禁用 Gradle 的默认输出。 下面是一个 init 脚本示例,它改变了记录任务执行和生成完成的方式。

customLogger.init.gradle

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
useLogger(new CustomEventLogger())

class CustomEventLogger extends BuildAdapter implements TaskExecutionListener {

    void beforeExecute(Task task) {
        println "[$task.name]"
    }

    void afterExecute(Task task, TaskState state) {
        println()
    }

    void buildFinished(BuildResult result) {
        println 'build completed'
        if (result.failure != null) {
            result.failure.printStackTrace()
        }
    }
}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ gradle -I customLogger.init.gradle build

> Task :compile
[compile]
compiling source


> Task :testCompile
[testCompile]
compiling test source


> Task :test
[test]
running unit tests


> Task :build
[build]

build completed
3 actionable tasks: 3 executed

记录器可以实现下面列出的任何侦听器接口。 注册日志程序时,只替换它实现的接口的日志记录。 其他接口的日志记录保持不变。 您可以在 Build 生命周期事件中找到关于侦听器接口的更多信息。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-05-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Gradle-日志
要显示指定级别的日志,可以通过日志开关来控制的,在执行的时候加入下面这些开关即可.
佛系编码
2019/12/11
1K0
Gradle-日志
Android Gradle 入门
Gradle是一款非常优秀的构建系统工具,它的DSL基于Groovy实现,可以让你很方便的通过代码控制这些DSL来达到你构建的目的,其构建的大部分功能都是通过插件的方式来实现,所以非常灵活方便,如果内置插件不能满足你的需求你可以自定义自己的插件。
飞雪无情
2018/08/28
9180
JAVA编译工具gradle
grade用在android环境被大家所熟知,其实grade是一种流行的编译框架,也可以用在编译java环境上。
mariolu
2019/09/25
2.5K0
Logback日志框架
Logback是一个日志实现框架,它实现了SLF4J 。它们二者出自同一作者之手,也是时下比较普及的一个组合。
李鸿坤
2020/07/17
1.1K0
Python Logging 库超详细的解读
在软件开发过程中,日志记录是一项至关重要的任务。通过在代码中引入适当的日志记录,开发人员可以更容易地追踪应用程序的行为、排除错误并进行性能分析。Python 的 logging 库是一个强大的工具,提供了丰富的功能,使得日志记录变得更加灵活和可配置。本文将深入探讨 Python logging 库的各个方面,包括基本概念、配置方法、处理程序和格式化等内容。
Michel_Rolle
2024/01/26
2.8K0
第一个 Gradle 脚本及简单命令
task 代表一个任务 doLast 代表 task 最后执行的一个 action doLast 可以使用 <<更简单的来表达
三产
2021/01/12
7560
Gradle教程「建议收藏」
在本课程中,我们将学习Gradle ,它是一个构建工具和一个依赖管理系统,与Maven和Ant非常相似,并且是专门为构建基于Java的项目而设计的。
全栈程序员站长
2022/09/14
2.3K0
Gradle教程「建议收藏」
slf4j-api、slf4j-log4j12、log4j之间关系
slf4j:Simple Logging Facade for Java,为java提供的简单日志Facade。Facade门面,更底层一点说就是接口。它允许用户以自己的喜好,在工程中通过slf4j接入不同的日志系统。
chenchenchen
2019/09/03
7.3K0
slf4j-api、slf4j-log4j12、log4j之间关系
忽视日志吃大亏,手把手教你玩转 SpringBoot 日志
对于刚学习编程的同学,很多人都对日志满不在乎,我们在做code review的时候,经常发现一些新同学喜欢一个方法写得很长,然后中间的注释和日志都少的可怜。
程序员大彬
2023/11/03
4.1K1
忽视日志吃大亏,手把手教你玩转 SpringBoot 日志
logging总结 - log4j2使用流程[归档存储]
<web-app> 2.5 以前要多个依赖 log4j-web,还需要在web.xml配置listener、filter
wuweixiang
2018/08/14
1.6K0
解决NoClassDefFoundError: ch/qos/logback/classic/spi/ThrowableProxy
在Java开发过程中,经常会遇到各种异常。其中,​​NoClassDefFoundError​​是一种常见的异常,它表示在运行时找不到类定义的错误。本篇文章将重点讨论一种特定的​​NoClassDefFoundError​​异常:​​NoClassDefFoundError: ch/qos/logback/classic/spi/ThrowableProxy​​,并提供解决方案。
大盘鸡拌面
2023/11/03
2.3K0
Gradle 创建java项目详细步骤
Ant历史悠久, 用build.xml 描述, 当时他的xml着实让很多工程师头痛, 但仍有用武之地.
louiezhou001
2019/07/25
1.2K0
Python学习-logging
Python的logging模块提供了通用的日志系统,可以方便第三方模块或者是应用使用。这个模块提供不同的日志级别,并可以采用不同的方式记录日志。
py3study
2020/01/09
8000
Gradle初探
task:构建脚本定义一个任务,并取名。doLast:构建脚本给任务添加一个动作Action,在task执行完毕后,要回调doLast这部分闭包的业务代码逻辑或者叫回调实现。
音视频开发进阶
2020/07/20
6880
深入探索Spring Boot基础功能(二):JSON数据处理与日志记录
大家好,我是默语,一个热爱技术分享的博主。今天我们将深入探讨Spring Boot的基础功能,包括如何处理JSON数据和使用slf4j进行日志记录。这篇博客将详细介绍Spring Boot在这些方面的强大能力,通过实际代码案例演示,为大家提供实用的开发技巧。希望这篇文章能为你的Spring Boot学习之旅提供有价值的参考。✨
默 语
2024/11/20
1850
syslog协议的Linux系统日志服务程序使用,作为运维应该手到擒来!
syslog 协议为网络设备间传输日志信息提供了标准化解决方案。借助该协议,服务器、路由器、防火墙等各类设备能够将日志消息发送至中央日志服务器,实现日志的集中管理与分析。下面为您详细介绍 syslog 协议的关键概念和组成部分 :
ICT系统集成阿祥
2025/02/04
2130
syslog协议的Linux系统日志服务程序使用,作为运维应该手到擒来!
学会充分利用Python中的日志,提升你的编程level
日志记录对于程序员来说是一个非常重要的功能。对于调试和显示运行时信息,日志记录同样有用。在本文中,我将介绍为什么以及如何在程序中使用python的日志模块。
HuangWeiAI
2021/05/07
6660
按照slf4j的API进行开发,自动转换到不同的日志系统
比如:选择JDK自带的日志系统,则只需要将slf4j-api-1.5.10.jar和slf4j-jdk14-1.5.10.jar放置到classpath中即可,如果中途无法忍受JDK自带的日志系统了,想换成log4j的日志系统,仅需要用slf4j-log4j12-1.5.10.jar替换slf4j-jdk14-1.5.10.jar即可(当然也需要log4j的jar及配置文件) 比如:
用户7718188
2021/10/07
2340
java日志组件介绍(common-logging,log4j,slf4j,logback )
复制来源:java日志组件介绍(common-logging,log4j,slf4j,logback ) common-logging common-logging是apache提供的一个通用的日志接口。用户可以自由选择第三方的日志组件作为具体实现,像log4j,或者jdk自带的logging, common-logging会通过动态查找的机制,在程序运行时自动找出真正使用的日志库。当然,common-logging内部有一个Simple logger的简单实现,但是功能很弱。所以使用common-logg
Ryan-Miao
2018/03/13
1.4K0
java日志组件介绍(common-logging,log4j,slf4j,logback )
Python: Logging模块实例详解
Logging 模块 import logging Quick Start 导入模块后直接logging.waring(),logging.error()简单粗暴地调用即可。默认的level是DEBUG,所以warning会打印出信息,info级别更低,不会输出信息。如果你不知道level等参数的意义请后面解释,淡定,继续往下看。 如果不特别配置,logging模块将日志打印到屏幕上(stdout)。 #!/usr/local/bin/python # -*- coding:utf-8 -*- import
用户2183996
2018/06/21
9370
相关推荐
Gradle-日志
更多 >
LV.1
这个人很懒,什么都没有留下~
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档