7

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

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

什么行为?

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

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

DebugTree 实现将自动确定从哪个类调用它并使用该类名作为其标记。由于标签各不相同,因此与 Pidcat 之类的日志阅读器结合使用时效果非常好。

什么是调试树?

默认情况下没有安装 Tree 实现,因为每次您登录生产环境时,都会有一只小狗死去。

同样,什么是树实现?它有什么作用?我如何停止杀死小狗?

两个简单的步骤:

在应用程序类的 onCreate 中安装所需的任何 Tree 实例。

在整个应用程序中随处调用 Timber 的静态方法。

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

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

4

1 回答 1

6

问题 :-

我们不想在 Signed 应用程序中打印日志,因为我们有时可能会记录敏感信息。通常为了克服这个问题,开发人员倾向于在写日志之前写 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
    }

  }
}

您可以种植不同的树木以获得不同的建筑风格。

查看这篇文章并收听这个播客

于 2018-12-24T11:51:50.783 回答