From 8e794b70f2acdc9a1af0ac31addf663f7982b9d6 Mon Sep 17 00:00:00 2001 From: Chi Ho Kwok Date: Wed, 16 Dec 2015 10:13:17 +0100 Subject: [PATCH] Moved logcat collection to a much earlier point in crash data collection so it is not polluted by messages generated by data collection. Some ROMs leave verbose messages on for Settings, that generates 2 lines per variable read and overwrites the whole 100 lines default logcat buffer. --- .../collector/CrashReportDataFactory.java | 87 ++++++++++--------- 1 file changed, 44 insertions(+), 43 deletions(-) diff --git a/src/main/java/org/acra/collector/CrashReportDataFactory.java b/src/main/java/org/acra/collector/CrashReportDataFactory.java index bc3d3c257..005cd80e1 100644 --- a/src/main/java/org/acra/collector/CrashReportDataFactory.java +++ b/src/main/java/org/acra/collector/CrashReportDataFactory.java @@ -148,6 +148,49 @@ public CrashReportData createCrashData(String msg, Throwable th, Map= Compatibility.VERSION_CODES.JELLY_BEAN); + if (prefs.getBoolean(ACRA.PREF_ENABLE_SYSTEM_LOGS, true) && hasReadLogsPermission) { + ACRA.log.i(LOG_TAG, "READ_LOGS granted! ACRA can include LogCat and DropBox data."); + if (crashReportFields.contains(LOGCAT)) { + try { + crashReportData.put(LOGCAT, LogCatCollector.collectLogCat(null)); + } catch (RuntimeException e){ + ACRA.log.e(LOG_TAG, "Error while retrieving LOGCAT data", e); + } + } + if (crashReportFields.contains(EVENTSLOG)) { + try { + crashReportData.put(EVENTSLOG, LogCatCollector.collectLogCat("events")); + } catch (RuntimeException e){ + ACRA.log.e(LOG_TAG, "Error while retrieving EVENTSLOG data", e); + } + } + if (crashReportFields.contains(RADIOLOG)) { + try { + crashReportData.put(RADIOLOG, LogCatCollector.collectLogCat("radio")); + } catch (RuntimeException e){ + ACRA.log.e(LOG_TAG, "Error while retrieving RADIOLOG data", e); + } + } + if (crashReportFields.contains(DROPBOX)) { + try { + crashReportData.put(DROPBOX, + DropBoxCollector.read(context, ACRA.getConfig().additionalDropBoxTags())); + } catch (RuntimeException e){ + ACRA.log.e(LOG_TAG, "Error while retrieving DROPBOX data", e); + } + } + } else { + ACRA.log.i(LOG_TAG, "READ_LOGS not allowed. ACRA will not include LogCat and DropBox data."); + } + try { crashReportData.put(ReportField.USER_APP_START_DATE, ReportUtils.getTimeString(appStartDate)); } catch (RuntimeException e){ @@ -389,10 +432,8 @@ public CrashReportData createCrashData(String msg, Throwable th, Map= Compatibility.VERSION_CODES.JELLY_BEAN); - if (prefs.getBoolean(ACRA.PREF_ENABLE_SYSTEM_LOGS, true) && hasReadLogsPermission) { - ACRA.log.i(LOG_TAG, "READ_LOGS granted! ACRA can include LogCat and DropBox data."); - if (crashReportFields.contains(LOGCAT)) { - try { - crashReportData.put(LOGCAT, LogCatCollector.collectLogCat(null)); - } catch (RuntimeException e){ - ACRA.log.e(LOG_TAG, "Error while retrieving LOGCAT data", e); - } - } - if (crashReportFields.contains(EVENTSLOG)) { - try { - crashReportData.put(EVENTSLOG, LogCatCollector.collectLogCat("events")); - } catch (RuntimeException e){ - ACRA.log.e(LOG_TAG, "Error while retrieving EVENTSLOG data", e); - } - } - if (crashReportFields.contains(RADIOLOG)) { - try { - crashReportData.put(RADIOLOG, LogCatCollector.collectLogCat("radio")); - } catch (RuntimeException e){ - ACRA.log.e(LOG_TAG, "Error while retrieving RADIOLOG data", e); - } - } - if (crashReportFields.contains(DROPBOX)) { - try { - crashReportData.put(DROPBOX, - DropBoxCollector.read(context, ACRA.getConfig().additionalDropBoxTags())); - } catch (RuntimeException e){ - ACRA.log.e(LOG_TAG, "Error while retrieving DROPBOX data", e); - } - } - } else { - ACRA.log.i(LOG_TAG, "READ_LOGS not allowed. ACRA will not include LogCat and DropBox data."); - } - // Application specific log file if (crashReportFields.contains(APPLICATION_LOG)) { try {