Timber和Bugly使用入门
2017.05.17
xiazdong
 热度
℃
在Android开发中,打日志、crash上报、统计DAU等功能是很常见的。使用系统提供的Log类打日志很方便,但是他有一些不方便:
- 每次需要加TAG。
- 不会打印当前线程。
- 不会打印当前行号。
而Timber很简单的解决了这些问题。
Bugly是腾讯的一款crash上报和运营统计的平台。APP的crash上报和统计DAU等功能可以通过该平台实现,集成很简单,见Bugly Android SDK 使用指南。
Timber的配置方法:build.gradle中加入 compile 'com.jakewharton.timber:timber:4.5.1'
。
Timber提供了DebugTree,只需要在Application的onCreate()中调用Timber.plant(new DebugTree())
初始化Timber。但是DebugTree的功能还有所欠缺,比如:
因此需要新建一个继承Timber.DebugTree的类:
public class ThreadAwareDebugTree extends Timber.DebugTree { @Override protected void log(int priority, String tag, String message, Throwable t) { if (tag != null) { String threadName = Thread.currentThread().getName(); tag = "<" + threadName + "> " + tag; } super.log(priority, tag, message, t); } @Override protected String createStackElementTag(StackTraceElement element) { return super.createStackElementTag(element) + "(Line " + element.getLineNumber() + ")"; } }
|
这只是debug版本的Tree,我们还需要创建release版本的Tree,叫ReleaseTree,不显示v,d,i,只显示w,e,wtf。这些日志都会以”跟踪日志”的形式上报给Bugly,实现如下:
public class ReleaseTree extends ThreadAwareDebugTree { @Override protected boolean isLoggable(String tag, int priority) { if (priority == Log.VERBOSE || priority == Log.DEBUG || priority == Log.INFO) { return false; } return true; } @Override protected void log(int priority, String tag, String message, Throwable t) { if (!isLoggable(tag, priority)) { return; } super.log(priority, tag, message, t); } }
|
接着,在Application的onCreate()方法中添加:
if (BuildConfig.DEBUG) { Timber.plant(new ThreadAwareDebugTree()); } else { Timber.plant(new ReleaseTree()); }
|
最后,在需要打印日志的地方,调用类似Timber.v("Hello")
即可,TAG为调用该语句的类名。
视频教程:Logging with Timber。