## 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