如何在Android上本地保存应用程序日志



我想在android设备上本地保存应用程序生成的日志,并在崩溃实例中查看它们。使用";Take Bug Report"在developer选项下,给出了与我无关的整个系统日志。我只查找应用程序运行时创建的日志。有这样的应用程序吗?或者,我可以在应用程序代码中包含任何库来满足我的需求吗?

您可以将firebase添加到项目中,一切都将自动完成
或者如果需要的话;"局部";,可以使用Thread.UncoughtException处理程序保存崩溃日志。当您的应用程序打开Create时注册它。

private static UncaughtExceptionHandler mDefaultUncaughtExceptionHandler;
public static void registerUncaughtExceptionHandler() {
mDefaultUncaughtExceptionHandler = Thread.getDefaultUncaughtExceptionHandler();
Thread.setDefaultUncaughtExceptionHandler(new UncaughtExceptionHandler() {
public void uncaughtException(Thread thread, Throwable ex) {
// Save Log
saveLog(ex);
// Throw system
mDefaultUncaughtExceptionHandler.uncaughtException(thread, ex);
}
});
}
private static void saveLog(Throwable exception) {
try {
String stackTrace = Log.getStackTraceString(exception);
// Save it to SharedPreferences or DB as you like
} catch (Exception e) {
}
}

然后可以提取最后一个崩溃日志,提交到您的服务器或在应用程序启动时显示在logcat中。

最好使用第三方库,如Firebase Crashlytics或Sentry Crash Report或AppMetrica用于崩溃报告。只需添加这些库并在其中一个网站上创建帐户,就可以获得崩溃的完整报告。但是如果你想在设备上保存日志,你可以参考这个问题:

将Logcat保存到Android设备中的文本文件

你可以试试这个

fun writeLog(context: Context) {
try {
val path = File(context.filesDir, "log_files")
if (!path.exists()) {
path.mkdir()
}
val fileName = "your_filename.txt"
Runtime.getRuntime().exec("logcat -v time -f $fileName")
} catch (e: IOException) {
}
}

或者,您可以根据自己的需求更改logcat命令:请参阅https://developer.android.com/studio/command-line/logcat

您可以在data/data/{applicationId}/files/log_files/中进行检查

最新更新