From 2762c1757848efcb789b58e819987633a59ba270 Mon Sep 17 00:00:00 2001 From: Harsh Shandilya Date: Mon, 24 Oct 2022 15:29:32 +0530 Subject: feat: setup Beagle for debugging --- app/build.gradle.kts | 6 ++++ app/src/main/java/app/passwordstore/Application.kt | 41 ++++++++++++++++++++-- .../util/log/ForwardingLogcatLogger.kt | 24 +++++++++++++ 3 files changed, 69 insertions(+), 2 deletions(-) create mode 100644 app/src/main/java/app/passwordstore/util/log/ForwardingLogcatLogger.kt (limited to 'app') diff --git a/app/build.gradle.kts b/app/build.gradle.kts index c099a2da..9baec021 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -102,7 +102,13 @@ dependencies { if (snapshot.snapshot) { implementation(libs.thirdparty.whatthestack) + implementation(libs.thirdparty.beagle.ui.drawer) + implementation(libs.thirdparty.beagle.log) } else { + debugImplementation(libs.thirdparty.beagle.ui.drawer) + debugImplementation(libs.thirdparty.beagle.log) + releaseImplementation(libs.thirdparty.beagle.noop) + releaseImplementation(libs.thirdparty.beagle.log.noop) debugImplementation(libs.thirdparty.whatthestack) } diff --git a/app/src/main/java/app/passwordstore/Application.kt b/app/src/main/java/app/passwordstore/Application.kt index fb4c0f63..4737c088 100644 --- a/app/src/main/java/app/passwordstore/Application.kt +++ b/app/src/main/java/app/passwordstore/Application.kt @@ -18,17 +18,28 @@ import app.passwordstore.util.extensions.getString import app.passwordstore.util.features.Feature import app.passwordstore.util.features.Features import app.passwordstore.util.git.sshj.setUpBouncyCastleForSshj +import app.passwordstore.util.log.ForwardingLogcatLogger import app.passwordstore.util.proxy.ProxyUtils import app.passwordstore.util.settings.GitSettings import app.passwordstore.util.settings.PreferenceKeys import app.passwordstore.util.settings.runMigrations import com.google.android.material.color.DynamicColors +import com.pandulapeter.beagle.Beagle +import com.pandulapeter.beagle.common.configuration.Behavior +import com.pandulapeter.beagle.log.BeagleLogger +import com.pandulapeter.beagle.modules.AppInfoButtonModule +import com.pandulapeter.beagle.modules.DeviceInfoModule +import com.pandulapeter.beagle.modules.DividerModule +import com.pandulapeter.beagle.modules.HeaderModule +import com.pandulapeter.beagle.modules.LifecycleLogListModule +import com.pandulapeter.beagle.modules.LogListModule +import com.pandulapeter.beagle.modules.PaddingModule +import com.pandulapeter.beagle.modules.ScreenCaptureToolboxModule import dagger.hilt.android.HiltAndroidApp import io.sentry.Sentry import io.sentry.protocol.User import java.util.concurrent.Executors import javax.inject.Inject -import logcat.AndroidLogcatLogger import logcat.LogPriority.DEBUG import logcat.LogPriority.VERBOSE import logcat.LogcatLogger @@ -51,7 +62,33 @@ class Application : android.app.Application(), SharedPreferences.OnSharedPrefere BuildConfig.ENABLE_DEBUG_FEATURES || prefs.getBoolean(PreferenceKeys.ENABLE_DEBUG_LOGGING, false) ) { - LogcatLogger.install(AndroidLogcatLogger(DEBUG)) + Beagle.initialize( + application = this, + behavior = + Behavior( + logBehavior = + Behavior.LogBehavior( + loggers = listOf(BeagleLogger), + ) + ) + ) + Beagle.set( + HeaderModule( + title = getString(R.string.app_name), + subtitle = BuildConfig.APPLICATION_ID, + text = + "${BuildConfig.BUILD_TYPE} v${BuildConfig.VERSION_NAME} (${BuildConfig.VERSION_CODE})" + ), + AppInfoButtonModule(), + PaddingModule(), + ScreenCaptureToolboxModule(), + DividerModule(), + LogListModule(), + LifecycleLogListModule(), + DividerModule(), + DeviceInfoModule(), + ) + LogcatLogger.install(ForwardingLogcatLogger(DEBUG)) setVmPolicy() } prefs.registerOnSharedPreferenceChangeListener(this) diff --git a/app/src/main/java/app/passwordstore/util/log/ForwardingLogcatLogger.kt b/app/src/main/java/app/passwordstore/util/log/ForwardingLogcatLogger.kt new file mode 100644 index 00000000..15b2a0c7 --- /dev/null +++ b/app/src/main/java/app/passwordstore/util/log/ForwardingLogcatLogger.kt @@ -0,0 +1,24 @@ +package app.passwordstore.util.log + +import com.pandulapeter.beagle.log.BeagleLogger +import logcat.AndroidLogcatLogger +import logcat.LogPriority +import logcat.LogPriority.DEBUG +import logcat.LogcatLogger + +/** + * Wrapper around [AndroidLogcatLogger] that ensures all logged messages are also forwarded to + * [BeagleLogger]. + */ +class ForwardingLogcatLogger(minPriority: LogPriority = DEBUG) : LogcatLogger { + private val androidLogger = AndroidLogcatLogger(minPriority) + + override fun isLoggable(priority: LogPriority): Boolean { + return androidLogger.isLoggable(priority) + } + + override fun log(priority: LogPriority, tag: String, message: String) { + androidLogger.log(priority, tag, message) + BeagleLogger.log(message = "[$tag]: $message", label = "Logcat", isPersisted = true) + } +} -- cgit v1.2.3