## 1.log信息的分类
除了常用的 debug,info,warning,error ,gradle自己特有的quiet和lifecycle。
## 2.选择log等级
-q/--quiet
-i//--info
-d/--debug
引申出
-s/--stacktrace
-S/--full-stacktrace
## 3.编写自己的log信息
println 后跟信息,gradle会将其重定向到日志系统中,默认为quiet等级。
当然你可以使用logger属性来编写不同等级的,继承与slf4j logger接口,然后加上一些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.')
~~~
~~~
qianhuis-Mac-mini:0112 qianhui$ gradle
An info log message which is always logged.
An error log message.
A warning log message.
A lifecycle info log message.
:help
Welcome to Gradle 2.2.1.
To run a build, run gradle <task> ...
To see a list of available tasks, run gradle tasks
To see a list of command-line options, run gradle --help
BUILD SUCCESSFUL
Total time: 2.265 secs
~~~
## 4.SLF4J日志
~~~
import org.slf4j.Logger
import org.slf4j.LoggerFactory
Logger slf4jLogger = LoggerFactory.getLogger('some-logger')
slf4jLogger.info('An info log message logged using SLF4j')
~~~
## 5.外部工具和库的logging
因为gradle是基于ant喝ivy的,所以前辈的logging输出应该被考虑,gradle会把它们的log重定向到gradle的log系统中,对于gradle有的等级,可以很好
的重定向,而对于gradle没有的,比如ant和ivy的trace等级,gradle会将其映射为debug等级,说明gradle默认情况智慧输出ant/ivy 的error和warning信息。
对于一些使用标准输出的工具,默认情况下,gradle重定向为quiet等级,标准的错误会被定义为error等级,但是这都是可以配置的。project对象提供一个LoggingManager,
该对象允许你去改变默认的重定向log等级。
~~~
logging.captureStandardOutput LogLevel.INFO
println 'A message which is logged at info level'
~~~
将log等级定位成info等级,执行命令后,如果加-q后会无法显示:
~~~
qianhuis-Mac-mini:0112 qianhui$ gradle -q
Welcome to Gradle 2.2.1.
To run a build, run gradle <task> ...
To see a list of available tasks, run gradle tasks
To see a list of command-line options, run gradle --help
~~~
## 6.为任务定义个log等级
~~~
println 'A message which is logged at info level'
task logInfo {
logging.captureStandardOutput LogLevel.INFO
doFirst {
println 'A task message which is logged at INFO level'
}
}
println 'end'
~~~
执行命令后会发现,任务中的log被隐藏掉了,因为任务中定义了log的等级为info,小于quiet等级,所以没有输出。说明任务内定义log等级只在任务内有效。
~~~
qianhuis-Mac-mini:0112 qianhui$ gradle -q logInfo
A message which is logged at info level
end
~~~
## 7.改变gradle日志
使用Gradle.useLogger()方法,具体做法是通过API中的接口重新定义log器。
~~~
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) {
} }
~~~
但是上面的程序暂时还无法运行成功,暂时不太清楚为什么,以后再找答案。
要想自定义log器,可以研究下面几个接口:
BuildListener
ProjectEvaluationListener
TaskExecutionGraphListener
TaskExecutionListener
TaskActionListener
- 前言
- gradle学习(1)-helloworld
- gradle学习(2)-基础语法
- gradle学习(3)-基础认识
- gradle学习(4)-构建java项目
- gradle学习(5)-创建eclipse项目
- gradle学习(6)-依赖管理
- gradle学习(7)-groovy
- gradle学习(8)-gradle的命令行
- gradle学习(9)-获取build相关信息
- gradle学习(10)-gui
- gradle学习(11)-编写构建脚本
- gradle学习(12)-groovy一些基础语法
- gradle学习(13)-有的没的
- gradle学习(14)-任务
- gradle学习(15)-任务
- gradle学习(16)-操作文件
- gradle学习(17)-被合并的ant
- gradle学习(18)-ant的属性
- gradle学习(19)-log系统
- gradle学习(20)-详解java插件
- gradle学习(21)-在eclipse中构建java项目
- gradle复习(1)-2种定义任务方式的区别
- gradle复习(2)-eclipse中添加依赖jar包
- gradle复习(3)-在gradle项目中使用TestNG
- gradle复习(4)-Cannot find System Java Compiler
- gradle复习(5)-Test remote debug
- gradle复习(6)-深入Jacoco
- gradle复习(7)-深入Jacoco
- gradle复习(8)-Task中行为
- gradle学习(22)-Sonar
- gradle学习(23)-Sonar runner