43 lines
1.7 KiB
Kotlin
43 lines
1.7 KiB
Kotlin
package be.mygod.vpnhotspot
|
|
|
|
import android.os.Bundle
|
|
import android.util.Log
|
|
import androidx.annotation.Size
|
|
import be.mygod.vpnhotspot.App.Companion.app
|
|
import com.crashlytics.android.Crashlytics
|
|
import com.google.firebase.analytics.FirebaseAnalytics
|
|
import io.fabric.sdk.android.Fabric
|
|
import timber.log.Timber
|
|
|
|
object DebugHelper {
|
|
private val analytics by lazy { FirebaseAnalytics.getInstance(app.deviceStorage) }
|
|
|
|
fun init() {
|
|
Fabric.with(app.deviceStorage, Crashlytics())
|
|
Timber.plant(object : Timber.DebugTree() {
|
|
override fun log(priority: Int, tag: String?, message: String, t: Throwable?) {
|
|
if (t == null) Crashlytics.log(priority, tag, message) else {
|
|
// Crashlytics.logException doesn't print to logcat
|
|
if (priority >= Log.WARN || priority == Log.DEBUG) Log.println(priority, tag, message)
|
|
if (priority >= Log.INFO) Crashlytics.logException(t)
|
|
}
|
|
}
|
|
})
|
|
}
|
|
|
|
fun log(tag: String?, message: String?) {
|
|
if (BuildConfig.DEBUG) Timber.tag(tag).d(message) else Crashlytics.log("$tag: $message")
|
|
}
|
|
|
|
fun setString(key: String, value: String?) = Crashlytics.setString(key, value)
|
|
|
|
/**
|
|
* This method is used to log "expected" and well-handled errors, i.e. we care less about logs, etc.
|
|
* logException is inappropriate sometimes because it flushes all logs that could be used to investigate other bugs.
|
|
*/
|
|
fun logEvent(@Size(min = 1L, max = 40L) event: String, extras: Bundle? = null) {
|
|
Timber.i(if (extras == null) event else "$event, extras: $extras")
|
|
analytics.logEvent(event, extras)
|
|
}
|
|
}
|