11package nl.q42.template.logging
22
3+ import android.util.Log
34import com.google.firebase.Firebase
45import com.google.firebase.crashlytics.crashlytics
56import io.github.aakira.napier.Antilog
6- import io.github.aakira.napier.DebugAntilog
77import io.github.aakira.napier.LogLevel
88import nl.q42.template.BuildConfig
9+ import io.github.aakira.napier.Napier
910
1011/* * A value suitable for Crashlytics
1112 * This value is used to truncate the user-defined message and the exception message
@@ -17,9 +18,6 @@ private const val MAX_CHARS_IN_LOG = 1200
1718 * this is not a stub
1819 */
1920class CrashlyticsLogger : Antilog () {
20-
21- private val logcatLogger = DebugAntilog ()
22-
2321 override fun performLog (
2422 priority : LogLevel ,
2523 tag : String? ,
@@ -30,10 +28,19 @@ class CrashlyticsLogger : Antilog() {
3028
3129 if (BuildConfig .DEBUG || priority > LogLevel .DEBUG ) {
3230 // also send to logcat
33- logcatLogger.log(priority, tag, throwable, message)
31+ val logLevel = priority.toAndroidLogLevel()
32+ val logMessage = buildString {
33+ if (message != null ) append(message)
34+ if (throwable != null ) {
35+ if (message != null ) append(" \n " )
36+ append(Log .getStackTraceString(throwable))
37+ }
38+ }
39+
40+ Log .println (logLevel, tag ? : " AppLogger" , logMessage)
3441 }
3542
36- val limitedMessage = message?.take(MAX_CHARS_IN_LOG ) ? : " (no message)" // to avoid OutOfMemoryError's
43+ val limitedMessage = message?.take(MAX_CHARS_IN_LOG ) ? : " (no message)" // to avoid OutOfMemoryError's
3744
3845 // at least one of message or throwable is not null
3946 if (priority < LogLevel .ERROR ) {
@@ -58,25 +65,37 @@ class CrashlyticsLogger : Antilog() {
5865 val numToRemove = 9
5966 val lastToRemove = stackTrace.getOrNull(numToRemove - 1 )
6067 if (lastToRemove == null ) {
61- logcatLogger.log(priority = LogLevel .ERROR , tag = null , throwable = null ,
62- message = " Got unexpected stacktrace while logging a message: ${stackTrace.contentToString()} "
68+ Log .e(
69+ null ,
70+ " Got unexpected stacktrace while logging a message: ${stackTrace.contentToString()} "
6371 )
6472 return SyntheticException (message, stackTrace)
6573 }
66- if (lastToRemove.className != io.github.aakira.napier.Napier ::class .java.name || lastToRemove.methodName != " e\$ default" ){
67- logcatLogger.log(priority = LogLevel .ERROR , tag = null , throwable = null ,
68- message = " Got unexpected stacktrace: class: ${lastToRemove.className} , method: ${lastToRemove.methodName} "
74+ if (lastToRemove.className != Napier ::class .java.name || lastToRemove.methodName != " e\$ default" ) {
75+ Log .e(
76+ null ,
77+ " Got unexpected stacktrace: class: ${lastToRemove.className} , method: ${lastToRemove.methodName} "
6978 )
7079 }
7180 val abbreviatedStackTrace = stackTrace.takeLast(stackTrace.size - numToRemove).toTypedArray()
7281 return SyntheticException (message, abbreviatedStackTrace)
7382 }
7483
84+ private fun LogLevel.toAndroidLogLevel (): Int {
85+ return when (this ) {
86+ LogLevel .VERBOSE -> Log .VERBOSE
87+ LogLevel .DEBUG -> Log .DEBUG
88+ LogLevel .INFO -> Log .INFO
89+ LogLevel .WARNING -> Log .WARN
90+ LogLevel .ERROR -> Log .ERROR
91+ LogLevel .ASSERT -> Log .ASSERT
92+ }
93+ }
7594}
7695
7796class SyntheticException (
78- message : String ,
79- private val abbreviatedStackTrace : Array <StackTraceElement >
97+ message : String ,
98+ private val abbreviatedStackTrace : Array <StackTraceElement >
8099) : Exception(message) {
81100 override fun getStackTrace (): Array <StackTraceElement > {
82101 return abbreviatedStackTrace
0 commit comments