Klog - 利用Kotlin的類擴充套件,為你的log輸出帶來無限遐想

Anderson大碼渣發表於2017-05-26

本著踩坑Kotlin的態度, 寫了一個Kotlin的log庫.使用起來很方便. 大家學習Kotlin的可以看一下.
Github: github.com/Jerey-Jobs/…

無論什麼語言, 程式設計師都需要輸出log, Kotlin的語法擴充套件功能可為我們帶來更新奇的輸出log模式.

輸出log的目的,無非兩種情況
1.用來表明程式執行到哪了
2.列印資料處理前後的值

那麼Klog帶來了資料邊處理邊列印的模式.

Klog簡介 (what is Klog?)

Klog是用Kotlin所寫的,利用其類擴充套件,實現了鏈式呼叫時,在不破壞其程式碼整體性的情況下,能夠實現資料列印跟蹤的log庫.

  • 優點:

    1.鏈式列印
    2.自動識別呼叫方類名為TAG
    3.列印執行緒號,程式碼行 (預設不開啟,需要開啟請 Klog.getSettings().setBorderEnable(true))
    4.列印等級控制

  • 缺點:

    由於Kotlin對於伴生類方法的惰性載入優化, 在kt中呼叫可以使用 Klog.d("hello"),但是在java中,其使用的是內部類的方式實現惰性載入.
    因此在java中, 呼叫方式變為了 Klog.Companion.i("test");

有更好的實現方式的歡迎pr or issues

獲取

project's build.gradle

      allprojects {
          repositories {
              ...
              maven { url 'https://jitpack.io' }
          }
      }複製程式碼

module's build.gradle (模組的build.gradle)

    dependencies {
            compile 'com.github.Jerey-Jobs:Klog:v0.2'
    }複製程式碼

說明(Explanation)

這種邊處理字串邊列印的模式.

    str.log()                   //直接輸出該物件toString
       .toUpperCase()
       .log("upper")             //輸出帶提示的處理結果
       .toLowerCase()            //繼續處理
       .log("lower")複製程式碼

Klog - 利用Kotlin的類擴充套件,為你的log輸出帶來無限遐想

又比如在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 - 利用Kotlin的類擴充套件,為你的log輸出帶來無限遐想
klog3.png

又或者,我們需要直接列印

    //修改Klog設定, 開啟邊框列印
    Klog.getSettings()
            .setBorderEnable(true)

    Klog.a("aaaaaaa")            //普通log輸出方式1
    Klog.a(contents = "bbbbb")   //普通log輸出方式2
    Klog.i("jerey", "aaaaaaa")    //帶tag輸出複製程式碼

Klog - 利用Kotlin的類擴充套件,為你的log輸出帶來無限遐想

so, Kotlin的類擴充套件為我們帶來無限遐想,我們可以乾的事情還有很多很多

歡迎Star!!
Github: github.com/Jerey-Jobs/…


本文作者:Anderson/Jerey_Jobs

部落格地址 : jerey.cn/

簡書地址 : Anderson大碼渣

github地址 : github.com/Jerey-Jobs

相關文章