Android 崩溃日志收集

原理
应用出现异常后,会由默认的异常处理器来处理异常,
我们要做的就是把这个任务接管过来,自己处理异常,包括收集日志,保存到本地,然后上传到服务器。

  • 步骤

1.自定义类 实现Thread.UncaughtExceptionHandler 接口

public class CrashHandler implements Thread.UncaughtExceptionHandler {

private static final String TAG = "CrashHandler";
private static CrashHandler INSTANCE = new CrashHandler();

private ISave mSave;//设置日志的保存方式  
private CrashHandler() { }//保证只有一个CrashHandler实例

/**
 * 获取CrashHandler实例 ,单例模式
 */
public static CrashHandler getInstance() {
    return INSTANCE;
}

/**
 * 初始化,,设置此CrashHandler来响应崩溃事件
 *
 * @param logSaver 保存的方式
 */
public void init(ISave logSaver) {
    mSave = logSaver;
    Thread.setDefaultUncaughtExceptionHandler(this);
}

/**
 * 当UncaughtException发生时会转入该函数来处理
 */
@Override
public void uncaughtException(final Thread thread, final Throwable ex) {
    Writer writer = new StringWriter();
    PrintWriter printWriter = new PrintWriter(writer);
    ex.printStackTrace(printWriter);
    Throwable cause = ex.getCause();
    while (cause != null) {
        cause.printStackTrace(printWriter);
        cause = cause.getCause();
    }
    printWriter.close();
    String stringBuilder = "↓↓↓↓exception↓↓↓↓\n" +
            writer.toString();
    mSave.writeCrash(thread, ex, TAG, stringBuilder);
    // 如果处理了,让主程序继续运行3秒再退出,保证异步的写操作能及时完成
    try {
        Thread.sleep(3000);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
 }
}  

推荐源码

  • 三方SDK
    1.网易云捕
    2.腾讯bugly
    3.Bugtags
    4.蒲公英
    5.BugHD(fir.im)
    6.Testin

你可能感兴趣的:(Android 崩溃日志收集)