java 崩溃日志_Android收集程序崩溃日志的方法
安卓Android如何手機(jī)程序崩潰日志并上傳到服務(wù)器呢?直接會(huì)用到Thread線程里面的UncaughtExceptionHandler接口方法,我們可以自定義一個(gè)類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);
}
/**
*?核心方法,當(dāng)程序crash?會(huì)回調(diào)此方法,?Throwable中存放這錯(cuò)誤日志
*/
@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");
//?錯(cuò)誤信息
//?這里還可以加上當(dāng)前的系統(tǒng)版本,手機(jī)型號(hào),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();
//?上傳錯(cuò)誤信息到服務(wù)器
//?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方法中生成之后,就調(diào)用上傳文件的方法即可,這里不再贅述。
來源網(wǎng)站:太平洋學(xué)習(xí)網(wǎng),轉(zhuǎn)載請(qǐng)注明出處:http://www.tpyyes.com/a/android/1015.html
總結(jié)
以上是生活随笔為你收集整理的java 崩溃日志_Android收集程序崩溃日志的方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python的序列化是什么意思_pyth
- 下一篇: android r.java 原理,深入