Try   HackMD

比 Android 原生更方便的 Log 工具: Timber

Daniel HuangSat, May 27, 2023 4:48 PM

Timber 是什麼

Timber 是一個以 Android Log 為基底所開發的 Logger Library,由 Jake Wharton 大神所開發。

Timber 為了解決什麼問題

1. 開發時可以留著,但發佈版本需要移除 Log

// 你可能很常看到類似這樣的寫法... if (BuildConfig.DEBUG) { Log.d(TAG, "Hello World!") }

一般來說在開發上,我們習慣使用 Android 的 Log class 來印出所需的資訊。但是當今天開發到一定的階段,程式必須發布上線時,為了資訊安全等需求,需要將這些 Log 給全部註解或移除,又或是加上 buildFlavor 或 buildType 判斷,這一切實在是太麻煩了

2. 每次在新的類別中使用 Log 就要建一個該類別的 TAG String

val TAG: String = Hello::class.java.simple if (BuildConfig.DEBUG) { Log.d(TAG, "Hello World!") }

Timber 怎麼使用

1. Dependency

build.gradle 中加入以下的 Dependency。

repositories { mavenCentral() } dependencies { implementation 'com.jakewharton.timber:timber:5.0.1' }

2. 初始化

在專案內繼承的 Application class 的 onCreate() 中呼叫以下程式碼。這樣一來,Timber 的 log 就只會在 BuildTypeDEBUG 的時候才會印出。

override fun onCreate() { super.onCreate() if (BuildConfig.DEBUG) { Timber.plant(Timber.DebugTree()) } }

如果有想要在正式版時印出特定的除錯資訊,可以參考官方的範例

3. 使用

Timber.d("initFcmToken: token = $token") Timber.e(e, "initCertificate: ")

基本上 i, w, d, e 四種 Log 類型都有。
另外,Library 本身還帶有語法檢查,如果使用 Timber 但格式錯誤,或是有用 Android 的 Log,都會有 IDE 的 Highlight 提醒你修正。

參考資料

本文同步發表在 Medium