From 434ddd13429363f813079859bd59f1f86924675f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kuba=20Szczodrzy=C5=84ski?= Date: Wed, 6 Nov 2019 22:49:26 +0100 Subject: [PATCH] [3.9.2-dev] Add persistent debug logging. --- app/build.gradle | 2 ++ .../java/pl/szczodrzynski/edziennik/App.java | 6 ++++++ .../edziennik/ui/modules/home/HomeFragment.java | 16 ++++++++++++++++ .../ui/modules/settings/SettingsNewFragment.java | 4 ++-- .../edziennik/utils/DebugLogFormat.kt | 10 ++++++++++ .../pl/szczodrzynski/edziennik/utils/Utils.java | 8 +++++--- app/src/main/res/layout/fragment_home.xml | 8 ++++++++ build.gradle | 4 ++-- 8 files changed, 51 insertions(+), 7 deletions(-) create mode 100644 app/src/main/java/pl/szczodrzynski/edziennik/utils/DebugLogFormat.kt diff --git a/app/build.gradle b/app/build.gradle index 137ea8a0..73121d5a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -164,6 +164,8 @@ dependencies { implementation "io.github.wulkanowy:signer-android:0.1.1" implementation "androidx.work:work-runtime-ktx:${versions.work}" + + implementation 'com.hypertrack:hyperlog:0.0.10' } repositories { mavenCentral() diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/App.java b/app/src/main/java/pl/szczodrzynski/edziennik/App.java index b72c713e..4841732b 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/App.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/App.java @@ -36,6 +36,7 @@ import com.google.gson.Gson; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonSyntaxException; +import com.hypertrack.hyperlog.HyperLog; import com.mikepenz.iconics.Iconics; import com.mikepenz.iconics.IconicsColor; import com.mikepenz.iconics.IconicsDrawable; @@ -81,6 +82,7 @@ import pl.szczodrzynski.edziennik.network.NetworkUtils; import pl.szczodrzynski.edziennik.network.TLSSocketFactory; import pl.szczodrzynski.edziennik.sync.SyncWorker; import pl.szczodrzynski.edziennik.ui.modules.base.CrashActivity; +import pl.szczodrzynski.edziennik.utils.DebugLogFormat; import pl.szczodrzynski.edziennik.utils.PermissionChecker; import pl.szczodrzynski.edziennik.utils.Themes; import pl.szczodrzynski.edziennik.utils.Utils; @@ -294,6 +296,10 @@ public class App extends androidx.multidex.MultiDexApplication implements Config } if (App.devMode || BuildConfig.DEBUG) { + HyperLog.initialize(this); + HyperLog.setLogLevel(Log.VERBOSE); + HyperLog.setLogFormat(new DebugLogFormat(this)); + ChuckerCollector chuckerCollector = new ChuckerCollector(this, true, RetentionManager.Period.ONE_HOUR); ChuckerInterceptor chuckerInterceptor = new ChuckerInterceptor(this, chuckerCollector); httpBuilder.addInterceptor(chuckerInterceptor); diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/home/HomeFragment.java b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/home/HomeFragment.java index a7a507f6..98c3e09d 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/home/HomeFragment.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/home/HomeFragment.java @@ -6,6 +6,7 @@ import android.content.Intent; import android.graphics.PorterDuff; import android.graphics.PorterDuffColorFilter; import android.graphics.Typeface; +import android.net.Uri; import android.os.AsyncTask; import android.os.Bundle; import android.os.Handler; @@ -31,11 +32,13 @@ import androidx.work.WorkManager; import com.afollestad.materialdialogs.MaterialDialog; import com.chuckerteam.chucker.api.Chucker; +import com.hypertrack.hyperlog.HyperLog; import com.mikepenz.iconics.IconicsColor; import com.mikepenz.iconics.IconicsDrawable; import com.mikepenz.iconics.IconicsSize; import com.mikepenz.iconics.typeface.library.community.material.CommunityMaterial; +import java.io.File; import java.util.ArrayList; import java.util.List; @@ -114,6 +117,19 @@ public class HomeFragment extends Fragment { startActivity(new Intent(activity, LoginLibrusCaptchaActivity.class)); })); + b.getLogs.setOnClickListener((v -> { + File logs = HyperLog.getDeviceLogsInFile(activity, true); + Intent intent = new Intent(Intent.ACTION_SEND); + + if(logs.exists()) { + intent.setType("text/plain"); + intent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://"+logs.getAbsolutePath())); + intent.putExtra(Intent.EXTRA_SUBJECT, "Share debug logs"); + intent.putExtra(Intent.EXTRA_TEXT, "Share debug logs"); + startActivity(Intent.createChooser(intent, "Share debug logs")); + } + })); + //((TextView)v.findViewById(R.id.nextSync)).setText(getString(R.string.next_sync_format,Time.fromMillis(app.appJobs.syncJobTime).getStringHMS())); diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/settings/SettingsNewFragment.java b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/settings/SettingsNewFragment.java index dad2df64..a03e4633 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/settings/SettingsNewFragment.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/settings/SettingsNewFragment.java @@ -533,7 +533,7 @@ public class SettingsNewFragment extends MaterialAboutFragment { syncCardIntervalItem.setChecked(app.appConfig.registerSyncEnabled); syncCardIntervalItem.setOnClickAction(() -> { List intervalNames = new ArrayList<>(); - if (App.devMode) { + if (App.devMode && false) { intervalNames.add(HomeFragment.plural(activity, R.plurals.time_till_seconds, 30)); intervalNames.add(HomeFragment.plural(activity, R.plurals.time_till_minutes, 2)); } @@ -545,7 +545,7 @@ public class SettingsNewFragment extends MaterialAboutFragment { intervalNames.add(HomeFragment.plural(activity, R.plurals.time_till_hours, 3)); intervalNames.add(HomeFragment.plural(activity, R.plurals.time_till_hours, 4)); List intervals = new ArrayList<>(); - if (App.devMode) { + if (App.devMode && false) { intervals.add(30); intervals.add(2 * 60); } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/utils/DebugLogFormat.kt b/app/src/main/java/pl/szczodrzynski/edziennik/utils/DebugLogFormat.kt new file mode 100644 index 00000000..fbcd6498 --- /dev/null +++ b/app/src/main/java/pl/szczodrzynski/edziennik/utils/DebugLogFormat.kt @@ -0,0 +1,10 @@ +package pl.szczodrzynski.edziennik.utils + +import android.content.Context +import com.hypertrack.hyperlog.LogFormat + +class DebugLogFormat(context: Context) : LogFormat(context) { + override fun getFormattedLogMessage(logLevelName: String?, tag: String?, message: String?, timeStamp: String?, senderName: String?, osVersion: String?, deviceUUID: String?): String { + return "${timeStamp?.replace("[TZ]".toRegex(), " ")}D/$tag: $message" + } +} \ No newline at end of file diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/utils/Utils.java b/app/src/main/java/pl/szczodrzynski/edziennik/utils/Utils.java index 1dadf492..776488db 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/utils/Utils.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/utils/Utils.java @@ -26,6 +26,8 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.core.content.FileProvider; +import com.hypertrack.hyperlog.HyperLog; + import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.BufferedReader; @@ -106,15 +108,15 @@ public class Utils { public static void d(String TAG, String message) { if (App.devMode) { - Log.d("Szkolny/"+TAG, message); + HyperLog.d("Szkolny/"+TAG, message); //debugLog.add(TAG+": "+message); } } public static void c(String TAG, String message) { - if (App.devMode) { + /*if (App.devMode) { Log.d(TAG, "// " + message); ///debugLog.add(TAG+": // "+message); - } + }*/ } /** diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml index 10b278a4..10b71cdc 100644 --- a/app/src/main/res/layout/fragment_home.xml +++ b/app/src/main/res/layout/fragment_home.xml @@ -39,6 +39,14 @@ tools:visibility="visible" tools:ignore="HardcodedText"> + +