在Android开发中我们都希望自己的一些重要信息用log打印记录方便以后检查,一般我们都用手机连接电脑,打印日志查看,但是万一是用户的手机,你不可可能拿给开发人员连接你的电脑吧,所以我们把日志信息存放在文件中。
一、本库功能
我们将打造一个基于Timber的实用Log库具有以下功能
- 显示log位置信息(常见功能),
- 将log日志信息输出到本地文件存储
因此需要找一个更好的log库。以下两个都是非常好的。
https://github.com/orhanobut/logger :简单、漂亮、强大的android logger,github上3000+ Star
https://github.com/JakeWharton/timber :基于Android原生Log的logger,小巧易扩展。
二、使用Timber进行封装
1、配置
在build.grade中引入Timber:
compile 'com.jakewharton.timber:timber:4.3.1'
在继承Application的自定义类中,设置Timber的树,其实Timber是类似管理着一片森林,具体用哪棵树是你自己这边决定的。比如Timber自带的是DebugTree这个类。
@Override
public void onCreate() {
super.onCreate();
//在这里先使用Timber.plant注册一个Tree,然后调用静态的.d .v 去使用
if (BuildConfig.DEBUG) {
Timber.plant(new Timber.DebugTree());
} else {
Timber.plant(new FileLoggingTree());
}
}
2、使用
Timber.tag("code_gg");
Timber.d("test Timber %d",10);
然后上面的FileLoggingTree是我这边自己写的一棵树,就是当我用Timber这个封装库拿到了Log的信息后,后面就可以我们自己处理了。比如写到文件中等。我这边先写了一个傻白甜的FileLoggingTree类,仅供参考。后面我们会用到另外一个第三方,就更强大了。
其中String CacheDiaPath = context.getCacheDir().toString();
private static class FileLoggingTree extends Timber.Tree{
/**
* 使用Timber自定义吧log信息存储到文件中
* 其中String CacheDiaPath = context.getCacheDir().toString();
*/
@Override
protected void log(int priority, String tag, String message, Throwable t) {
if (TextUtils.isEmpty(CacheDiaPath)) {
return;
}
File file = new File(CacheDiaPath + "/log.txt");
Log.v("日志存储路径", "file.path:" + file.getAbsolutePath() + ",message:" + message);
FileWriter writer = null;
BufferedWriter bufferedWriter = null;
try {
writer = new FileWriter(file);
bufferedWriter = new BufferedWriter(writer);
bufferedWriter.write(message);
bufferedWriter.flush();
}catch (IOException e) {
Log.v(