一、使用Timber的好处
不再重复使用TAG。之前使用Log方法每次使用都需要定义并传入一个TAG,在Timber中,若使用DebugTree,默认为当前类类名,若使用自定义Tree,直接定义一次,到处使用,不需重复设置
在打Timber调用处,不仅可以只输出Log,还可以执行其他操作。比如:存到数据库,进行输出,Socket传输,甚至显示到UI界面上等,只需要自定义Tree,并将对应逻辑在log(int priority, String tag, String message, Throwable t)方法中实现
统一项目Log日志方法,输出形式,输出时间,更加符合面向对象思想
二、使用方式
1、引入
api 'com.jakewharton.timber:timber:4.5.1'
2、实现ReleaseLogTree
private static class ReleaseLogTree extends Timber.Tree {
@Override
protected void log(int priority, String tag, String message, Throwable t) {
// TODO: 2020-03-19 这里可以对log信息做各种各样的操作!!!数据库、网络等
Log.i("TimberActivity", message);
}
}
private static class ReleaseLogsTree extends Timber.DebugTree {
@Override
protected void log(int priority, String tag, String message, Throwable t) {
// TODO: 2020-03-19 这里可以对log信息做各种各样的操作!!!数据库、网络等
Log.i("TimberActivity", message);
super.log(priority, tag, message, t);
}
}
3、设置debug和release 打印树
if (BuildConfig.DEBUG) {
Timber.plant(new Timber.DebugTree());
} else {
Timber.plant(new ReleaseLogTree());
}
4、设置TAG
Timber.tag("TimberActivity");
5、调用打印Log
Timber.i("log for i !");
Timber.d("log for d !");
Timber.v("log for v !");
Timber.w("log for w !");
Timber.e("log for e !");
6、adb控制Log的打开关闭
//开启log
adb -d shell setprop log.tag.TimberActivity DEBUG
//关闭log
adb -d shell setprop log.tag.TimberActivity WARN