本着踩坑Kotlin的態度, 寫了一個Kotlin的log庫.使用起來很方便. 你們學習Kotlin的能夠看一下.
Github: github.com/Jerey-Jobs/…java
不管什麼語言, 程序員都須要輸出log, Kotlin的語法擴展功能可爲咱們帶來更新奇的輸出log模式.git
輸出log的目的,無非兩種狀況
1.用來代表程序執行到哪了
2.打印數據處理先後的值程序員
那麼Klog帶來了數據邊處理邊打印的模式.github
Klog是用Kotlin所寫的,利用其類擴展,實現了鏈式調用時,在不破壞其代碼總體性的狀況下,可以實現數據打印跟蹤的log庫.maven
優勢:
1.鏈式打印
2.自動識別調用方類名爲TAG
3.打印線程號,代碼行 (默認不開啓,須要開啓請 Klog.getSettings().setBorderEnable(true)
)
4.打印等級控制學習
缺點:
因爲Kotlin對於伴生類方法的惰性加載優化, 在kt中調用可使用 Klog.d("hello")
,可是在java中,其使用的是內部類的方式實現惰性加載.
所以在java中, 調用方式變爲了 Klog.Companion.i("test");
gradle
有更好的實現方式的歡迎pr or issues優化
project's build.gradleui
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}複製代碼
module's build.gradle (模塊的build.gradle)url
dependencies {
compile 'com.github.Jerey-Jobs:Klog:v0.2'
}複製代碼
這種邊處理字符串邊打印的模式.
str.log() //直接輸出該對象toString
.toUpperCase()
.log("upper") //輸出帶提示的處理結果
.toLowerCase() //繼續處理
.log("lower")複製代碼
又好比在lambda時,咱們調試時須要跟蹤數據被處理的狀況
var list = arrayListOf<String>("aaa", "bb", "cccc", "ddddd")
list.log("init")
.map { it -> it.toUpperCase() }
.log("after map")
.filter { it -> it.length > 2 }
.log("after filter")複製代碼
又或者,咱們須要直接打印
//修改Klog設置, 開啓邊框打印
Klog.getSettings()
.setBorderEnable(true)
Klog.a("aaaaaaa") //普通log輸出方式1
Klog.a(contents = "bbbbb") //普通log輸出方式2
Klog.i("jerey", "aaaaaaa") //帶tag輸出複製代碼
so, Kotlin的類擴展爲咱們帶來無限遐想,咱們能夠乾的事情還有不少不少
歡迎Star!!
Github: github.com/Jerey-Jobs/…
本文做者:Anderson/Jerey_Jobs
博客地址 : jerey.cn/
簡書地址 : Anderson大碼渣
github地址 : github.com/Jerey-Jobs