J. *_* K. 6 android timber-android
我有用于记录和与崩溃报告服务合作的Timber库,我的应用程序中有Crashlytics和Loggly服务.
因此,我不得不种两棵树:
Timber.plant(new CrashlyticsTree());
Timber.plant(new LogglyTree(BuildConfig.LOGGLY_TOKEN));
Run Code Online (Sandbox Code Playgroud)
现在,每次我打电话:
Timber.e("bla bla");
Run Code Online (Sandbox Code Playgroud)
我得到了Loggly中的所有日志,但是我想让其中一些登录到Loggly,其中一些要转到Crashlytics,那么我该怎么做呢?
结果是每次调用.e或.w例如迭代所有种植的树并调用它们各自的.e实现.w。
这意味着如果我想将库 A 和库 BI 分开,需要为每个库使用不同的日志记录优先级。
所以我选择用于.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())
Run Code Online (Sandbox Code Playgroud)
现在在我的代码中,如果我想通过 LibraryA 记录某些内容,我会这样做:
Timber.e("Test Library A"); // calls LibraryA's Tree's `.e` method
Run Code Online (Sandbox Code Playgroud)
如果我想使用库 B 的日志记录实用程序,我会这样做:
Timber.w("Test Library B"); // calls LibraryB's Tree's `.w` method
Run Code Online (Sandbox Code Playgroud)