java 崩溃日志_Android收集程序崩溃日志的方法

本文介绍了如何在Android程序中实现自定义的崩溃日志处理,通过创建CrashHandler类并实现UncaughtExceptionHandler接口,当程序崩溃时,将错误信息写入到SD卡的errorlog.log文件,并可进一步上传到服务器。只需在MainActivity的onCreate方法中初始化CrashHandler即可全局捕获异常。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

安卓Android如何手机程序崩溃日志并上传到服务器呢?直接会用到Thread线程里面的UncaughtExceptionHandler接口方法,我们可以自定义一个类CrashHandler,代码如下:package com.tpyyes;

import java.io.File;

import java.io.FileWriter;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.LineNumberReader;

import java.lang.Thread.UncaughtExceptionHandler;

import java.util.Date;

import android.content.Context;

import android.os.Environment;

import android.util.Log;

public class CrashHandler implements UncaughtExceptionHandler {

private static CrashHandler instance;

public static CrashHandler getInstance() {

if (instance == null) {

instance = new CrashHandler();

}

return instance;

}

public void init(Context ctx) {

Thread.setDefaultUncaughtExceptionHandler(this);

}

/**

* 核心方法,当程序crash 会回调此方法, Throwable中存放这错误日志

*/

@Override

public void uncaughtException(Thread arg0, Throwable arg1) {

String logPath;

if (Environment.getExternalStorageState().equals(

Environment.MEDIA_MOUNTED)) {

//logPath = Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + File.separator + "log";

logPath = "/sdcard/Download/";

File file = new File(logPath);

if (!file.exists()) {

file.mkdirs();

}

try {

FileWriter fw = new FileWriter(logPath + File.separator  + "errorlog.log", true);

fw.write(new Date() + "\n");

// 错误信息

// 这里还可以加上当前的系统版本,手机型号,MAC地址 等等信息

StackTraceElement[] stackTrace = arg1.getStackTrace();

fw.write(arg1.getMessage() + "\n");

for (int i = 0; i 

fw.write("file:" + stackTrace[i].getFileName() + " class:"

+ stackTrace[i].getClassName() + " method:"

+ stackTrace[i].getMethodName() + " line:"

+ stackTrace[i].getLineNumber() + "\n");

}

fw.write("\n");

fw.close();

// 上传错误信息到服务器

// uploadToServer();

} catch (IOException e) {

Log.e("crash handler", "load file failed...", e.getCause());

}

}

arg1.printStackTrace();

android.os.Process.killProcess(android.os.Process.myPid());

}

}

如何在Android程序中使用我们自定义的程序崩溃日志呢?只需要在程序入口MainActivity类中的onCreate方法中加入如下代码即可://全局异常捕获

CrashHandler crashHandler = CrashHandler.getInstance();

crashHandler.init(getApplicationContext());

至于上传生成的errorlog.log日志文件如何上传,就和普通的Java文件上传是一样的,等再onCreate方法中生成之后,就调用上传文件的方法即可,这里不再赘述。

来源网站:太平洋学习网,转载请注明出处:http://www.tpyyes.com/a/android/1015.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值