Android Log日志管理

使用Timber

源码地址:https://github.com/JakeWharton/timber

在build.grade中引入Timber:

 

implementation 'com.jakewharton.timber:timber:4.7.0'

 

在自定义Application中:

 

if (isDebug()) {
    Timber.plant(new DebugTree());
} else {
    Timber.plant(new ReleaseTree());
}

创建新的类

 

public class DebugTree 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() + ")";  //日志显示行号
    }
}
public class ReleaseTree extends Timber.DebugTree {
    
    @Override
        protected void log(int priority, String tag, String message, Throwable t) {
            // String CacheDiaPath = context.getCacheDir().toString();
if (TextUtils.isEmpty(CacheDiaPath)) {
return;
            }
            File file = new File(CacheDiaPath + "/log.txt");
            Log.v("dyp", "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("dyp", "存储文件失败");    
e.printStackTrace();
             } finally {
                if (bufferedWriter != null) {
                    try {
                        bufferedWriter.close();
                } catch (IOException e) {
                        e.printStackTrace();
                }
            }
            }
        }

}

以上两个,一个是调试版本使用,一个是正式版本使用。还有一些其他的树,可以自己写一下,如果控制打印等级,也可以加上去。

之后你就会觉得很麻烦,日志越来越多,肯定要有管理,打印等级也要控制一下,即便在等级低的时候,也要记录日志,因为有很多日志要在有异常的时候打印出来,但是又不能打印一两句话,所以要把上下文打印出来,这样就麻烦很多了。

 

先说管理吧

logback-android 

地址:https://github.com/tony19/logback-android 点击打开链接

 

In app/build.gradle, add the following dependencies:

dependencies {
  compile 'org.slf4j:slf4j-api:1.7.25'
  compile 'com.github.tony19:logback-android:1.1.1-11'
}

Create app/src/main/assets/logback.xml containing:

<configuration>
  <appender name="logcat" class="ch.qos.logback.classic.android.LogcatAppender">
    <tagEncoder>
      <pattern>%logger{12}</pattern>
    </tagEncoder>
    <encoder>
      <pattern>[%-20thread] %msg</pattern>
    </encoder>
  </appender>

  <root level="DEBUG">
    <appender-ref ref="logcat" />
  </root>
</configuration>

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值