aboutsummaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
Diffstat (limited to 'app')
-rw-r--r--app/build.gradle.kts6
-rw-r--r--app/src/main/java/app/passwordstore/Application.kt41
-rw-r--r--app/src/main/java/app/passwordstore/util/log/ForwardingLogcatLogger.kt24
3 files changed, 69 insertions, 2 deletions
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)
+ }
+}