Skip to content

Commit 4fa7f56

Browse files
committed
FIX napier
1 parent ec9faee commit 4fa7f56

File tree

2 files changed

+37
-13
lines changed

2 files changed

+37
-13
lines changed

app/proguard-rules.pro

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,3 +27,8 @@
2727
}
2828

2929
## END enums
30+
31+
## START napier
32+
-keep class io.github.aakira.napier.* {
33+
*;
34+
}

app/src/main/kotlin/nl/q42/template/logging/CrashlyticsLogger.kt

Lines changed: 32 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
package nl.q42.template.logging
22

3+
import android.util.Log
34
import com.google.firebase.Firebase
45
import com.google.firebase.crashlytics.crashlytics
56
import io.github.aakira.napier.Antilog
6-
import io.github.aakira.napier.DebugAntilog
77
import io.github.aakira.napier.LogLevel
88
import 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
*/
1920
class 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

7796
class 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

Comments
 (0)