android – 如何告诉Timber哪个日志调用是针对哪个Tree?

前端之家收集整理的这篇文章主要介绍了android – 如何告诉Timber哪个日志调用是针对哪个Tree?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我有用于记录和与崩溃报告服务合作的Timber库,我的应用程序中有Crashlytics和Loggly服务.

因此,我不得不种两棵树:

Timber.plant(new CrashlyticsTree());
Timber.plant(new LogglyTree(BuildConfig.LOGGLY_TOKEN));

现在,每次我打电话:

Timber.e("bla bla");

我得到了Loggly中的所有日志,但是我想让其中一些登录到Loggly,其中一些要转到Crashlytics,那么我该怎么做呢?

最佳答案
例如,每次调用.e或.w时,遍历所有种植的树并调用它们各自的.e和.w实现.

这意味着如果我想将库A和库B分开,我需要为每个库使用不同的日志记录优先级.

因此,我选择将.e用于库A,将.w用于库B.

为了做到这一点,我必须创建从Timber.HollowTree继承的自定义树,并且只实现所需的日志调用,并将其余部分留空.

public class LibraryATree extends Timber.HollowTree {
    @Override
    public void e(Args){
        // Do something
    }
}

public class LibraryBTree extends Timber.HollowTree {
    @Override
    public void w(Args){
        // Do something
    }
}

Timber.plant(new LibraryATree())
Timber.plant(new LibraryBTree())

现在在我的代码中,如果我想通过LibraryA记录一些东西,我这样做:

Timber.e("Test Library A"); // calls LibraryA's Tree's `.e` method

如果我想使用Library B的日志记录实用程序,我这样做:

Timber.w("Test Library B"); // calls LibraryB's Tree's `.w` method

猜你在找的Android相关文章