【问题标题】:What exactly does the Timber library do?Timber 库到底是做什么的?
【发布时间】:2018-12-24 11:06:41
【问题描述】:

我听说过 Timber 并且正在阅读 github README,但这让我很困惑。

行为是通过 Tree 实例添加的。您可以安装实例 通过调用 Timber.plant。应尽早安装树木 尽可能。您的应用程序的 onCreate 是最合乎逻辑的 选择。

什么行为?

这是一个带有小型、可扩展 API 的记录器,提供实用程序 在 Android 的普通 Log 类之上。

它在 Android 的 Log 之上还提供了什么?

DebugTree 实现会自动找出从哪个 class 它被调用并使用该类名作为其标记。由于 标签各不相同,当与日志阅读器结合使用时效果非常好 小猫。

什么是调试树?

默认情况下没有安装 Tree 实现,因为每个 当你登录生产时,一只小狗死了。

再次,什么是树实现?它有什么作用?以及如何停止杀死小狗?

两个简单的步骤:

在你的 onCreate 中安装任何你想要的 Tree 实例 应用类。

在您的应用中随处调用 Timber 的静态方法。

两个简单的步骤可以完成什么?

自述文件中没有任何解释。对于已经知道它是什么的人来说,这几乎是一个描述:/

【问题讨论】:

  • This article 一次性回答所有问题。
  • 它的自述文件相当混乱。尽管如此,我对 Log 的性能仍有很多疑问。
  • 这里有一个教训:糟糕的文档是一个问题。 Timber 引入了诸如“树木”和“种植”之类的概念,但它未能在其自述文件中解释这一点:您应该去了解这些含义的 1 个地方。我们需要 SO 和一篇 Medium 文章来理解它的基本概念,这一事实非常可悲。很棒的图书馆,沟通不畅。

标签: android timber-android


【解决方案1】:

问题:-

我们不想在签名应用程序中打印日志,因为我们有时可能会记录敏感信息。通常为了克服这个问题,开发人员倾向于在写日志之前写 if 条件

例子:-

 if(BuildConfig.DEBUG) {
      Log.d(TAG,userName);
  }

所以每次你想打印一个日志时,你都需要写一个 if 条件和一个 TAG,大多数时候是类名

木材解决了这两个问题

您只需要在应用程序类中检查一次条件并初始化Timber.plant

class MyApplication : Application() {

override fun onCreate() {
    super.onCreate()

    if (BuildConfig.DEBUG) {
        Timber.plant(DebugTree())
     }
 }

} 

剩下的所有地方我们都可以写Timber.d("Message")而不带任何标签或if条件。

如果你想要一个不同的标签,那么你可以使用

  Timber.tag("Tag").d("message");

编辑:

您还可以在 Timber 中种植自己的树木,并做一些很酷的事情,例如在发布时仅记录警告和错误,向服务器发送警告和错误日志等。例如

import timber.log.Timber;

public class ReleaseTree extends Timber.Tree {
  @Override 
  protected void log(int priority, String tag, String message, Throwable t) {

    if (priority == ERROR || priority == WARNING){
      //Send to server
    }

  }
}

您可以为不同的构建风格种植不同的树木。

查看此article 并收听此podcast

【讨论】:

    猜你喜欢
    • 2015-08-06
    • 2013-09-02
    • 2014-01-02
    • 2013-10-10
    • 2017-05-08
    • 2022-01-20
    • 2012-10-17
    • 2017-06-15
    • 2011-05-20
    相关资源
    最近更新 更多