gradle学习(19)-log系统
来源:互联网 发布:ubuntu tty 编辑:程序博客网 时间:2024/05/01 03:29
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$ gradleAn info log message which is always logged.An error log message.A warning log message.A lifecycle info log message.:helpWelcome to Gradle 2.2.1.To run a build, run gradle <task> ...To see a list of available tasks, run gradle tasksTo see a list of command-line options, run gradle --helpBUILD SUCCESSFULTotal time: 2.265 secs
4.SLF4J日志
import org.slf4j.Loggerimport org.slf4j.LoggerFactoryLogger 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.INFOprintln 'A message which is logged at info level'
将log等级定位成info等级,执行命令后,如果加-q后会无法显示:
qianhuis-Mac-mini:0112 qianhui$ gradle -qWelcome to Gradle 2.2.1.To run a build, run gradle <task> ...To see a list of available tasks, run gradle tasksTo 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 logInfoA message which is logged at info levelend
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学习(19)-log系统
- 系统学习 Gradle
- 安卓Studio学习笔记---gradle自定义BuildConfig.DEBUG实现在调试输出Log,正式的时候不输出Log
- Gradle学习
- Gradle学习
- Gradle学习
- Gradle学习
- Gradle学习
- Gradle学习
- 学习GRADLE
- 学习gradle
- gradle 学习
- Gradle 学习
- Gradle学习
- gradle学习
- java日志系统学习--java.util.log.Level
- 人人网SDK Demo项目学习获取系统Log类
- java日志系统学习--java.util.log.Level
- 我的开源视音频项目汇总
- android中杀死进程的方法
- LeetCode--Search a 2D Matrix
- 用BCB做一个自己的Color Dector --- 实时显示鼠标所在位置的像素值
- 产品经理之复审原型
- gradle学习(19)-log系统
- 对pair的sort
- automake 安装及使用
- Select和epoll的区别
- 几个页面跳转以及传值(通知传值)
- 【C++ Primer】【学习笔记】【第十章】关联容器之:map类型
- 数据结构课程设计03
- LeetCode--Sort Colors
- [汉诺塔][第二阶段-汉诺塔入门][HDOJ-2077]汉诺塔IV