如何告诉木材哪个日志调用是针对哪棵树的



我有用于日志记录和与崩溃报告服务合作的木材库,我的应用程序中同时具有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

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

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

相关内容

最新更新