轻松实现 Android 日志记录,使用 Timber 与 Kotlin

发布: (2026年1月8日 GMT+8 16:49)
4 min read
原文: Dev.to

Source: Dev.to

什么让 Timber 与众不同?

  • 简洁清晰 – 简单的 API,去除重复的样板代码。
  • 自动标签生成 – 使用调用类的名称作为标签,永远不需要手动硬编码标签。
  • 可自定义的树 – 控制日志的去向(例如,发送到崩溃报告工具,按构建类型过滤)。
  • 生产环境安全 – 在发布构建中默认禁用日志,防止敏感信息意外泄露。

在 Android 应用中设置 Timber

步骤 1:添加依赖

// app‑level build.gradle
implementation 'com.jakewharton.timber:timber:5.0.1' // 检查最新版本

步骤 2:在 Application 类中初始化 Timber

在应用启动时种下合适的树。

class MyApp : Application() {
    override fun onCreate() {
        super.onCreate()
        if (BuildConfig.DEBUG) {
            Timber.plant(Timber.DebugTree())
        } else {
            Timber.plant(ReleaseTree()) // 发布构建的自定义树
        }
    }
}

AndroidManifest.xml 中声明自定义的 Application 类。

步骤 3:在代码中记录日志

将标准的 Log 调用替换为 Timber 方法:

Timber.d("Debug message")
Timber.i("Info message")
Timber.w("Warning message")
Timber.e("Error message: %s", error)

// 使用 Kotlin 字符串模板
Timber.d("User id: $userId")

支持所有标准日志级别(verbose、debug、info、warn、error)。

高级用法:自定义树和扩展

自定义树

定义一棵树,将日志路由到崩溃报告服务(例如 Firebase Crashlytics、Sentry):

class CrashReportingTree : Timber.Tree() {
    override fun log(priority: Int, tag: String?, message: String, t: Throwable?) {
        if (priority >= Log.WARN) {
            // 将警告/错误发送到你的崩溃报告后端
        }
    }
}

在发布构建中种下这棵树,只捕获重要日志。

Kotlin 扩展

timberkt 这样的库提供 Kotlin 风格的扩展。只有在实际打印日志时才会求值 lambda,从而提升性能:

Timber.d { "User id: $userId, name: ${user.name}" }

为什么选择 Timber?

  • 无需手动标签 – 自动标签生成节省时间,避免错误。
  • 轻松清理 – 一行代码即可在发布构建中禁用日志,无需逐个查找 Log.d
  • 可自定义行为 – 在生产环境中将日志发送到外部服务,保持 Logcat 整洁。
  • 丰富的元数据 – 包含类名、行号等信息,使日志更具可读性。

结语

Timber 不仅仅是另一款日志库;它是对 Android 开发工作流的深思熟虑的提升。凭借简洁的语法、自动标签和可自定义的树,日志记录变得轻而易举,同时仍保持完整的控制和安全性。

下次当你准备使用 Log.d("TAG", "Some message") 时,试试 Timber——它可能会彻底改变你的日志记录方式。

祝编码愉快!

Back to Blog

相关文章

阅读更多 »