Skip to content

Commit 24ed613

Browse files
committed
Clean up Logging.log
Split log level and alert level logging into their own methods to make the code easier to follow.
1 parent 7416763 commit 24ed613

File tree

2 files changed

+58
-38
lines changed
  • OneSignalSDK/onesignal/core/src

2 files changed

+58
-38
lines changed

OneSignalSDK/onesignal/core/src/main/java/com/onesignal/debug/internal/logging/Logging.kt

Lines changed: 48 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -89,45 +89,59 @@ object Logging {
8989
throwable: Throwable?,
9090
) {
9191
val fullMessage = "[${Thread.currentThread().name}] $message"
92-
if (level.compareTo(logLevel) < 1) {
93-
when (level) {
94-
LogLevel.VERBOSE -> android.util.Log.v(TAG, fullMessage, throwable)
95-
LogLevel.DEBUG -> android.util.Log.d(TAG, fullMessage, throwable)
96-
LogLevel.INFO -> android.util.Log.i(TAG, fullMessage, throwable)
97-
LogLevel.WARN -> android.util.Log.w(TAG, fullMessage, throwable)
98-
LogLevel.ERROR, LogLevel.FATAL -> android.util.Log.e(TAG, message, throwable)
99-
else -> {}
100-
}
92+
93+
logToLogcat(level, fullMessage, throwable)
94+
showVisualLogging(level, fullMessage, throwable)
95+
callLogListeners(level, fullMessage, throwable)
96+
}
97+
98+
private fun logToLogcat(
99+
level: LogLevel,
100+
message: String,
101+
throwable: Throwable?,
102+
) {
103+
if (level.compareTo(logLevel) >= 1) return
104+
when (level) {
105+
LogLevel.VERBOSE -> android.util.Log.v(TAG, message, throwable)
106+
LogLevel.DEBUG -> android.util.Log.d(TAG, message, throwable)
107+
LogLevel.INFO -> android.util.Log.i(TAG, message, throwable)
108+
LogLevel.WARN -> android.util.Log.w(TAG, message, throwable)
109+
LogLevel.ERROR, LogLevel.FATAL -> android.util.Log.e(TAG, message, throwable)
110+
else -> {}
101111
}
112+
}
102113

103-
if (level.compareTo(visualLogLevel) < 1 && applicationService?.current != null) {
104-
try {
105-
var fullMessage: String? = "$message\n".trimIndent()
106-
if (throwable != null) {
107-
fullMessage += throwable.message
108-
val sw = StringWriter()
109-
val pw = PrintWriter(sw)
110-
throwable.printStackTrace(pw)
111-
fullMessage += sw.toString()
112-
}
113-
val finalFullMessage = fullMessage
114-
115-
suspendifyOnMain {
116-
val currentActivity = applicationService?.current
117-
if (currentActivity != null) {
118-
AlertDialog
119-
.Builder(currentActivity)
120-
.setTitle(level.toString())
121-
.setMessage(finalFullMessage)
122-
.show()
123-
}
114+
private fun showVisualLogging(
115+
level: LogLevel,
116+
message: String,
117+
throwable: Throwable?,
118+
) {
119+
if (level.compareTo(visualLogLevel) >= 1) return
120+
121+
try {
122+
var fullMessage: String? = "$message\n".trimIndent()
123+
if (throwable != null) {
124+
fullMessage += throwable.message
125+
val sw = StringWriter()
126+
val pw = PrintWriter(sw)
127+
throwable.printStackTrace(pw)
128+
fullMessage += sw.toString()
129+
}
130+
val finalFullMessage = fullMessage
131+
132+
suspendifyOnMain {
133+
val currentActivity = applicationService?.current
134+
if (currentActivity != null) {
135+
AlertDialog
136+
.Builder(currentActivity)
137+
.setTitle(level.toString())
138+
.setMessage(finalFullMessage)
139+
.show()
124140
}
125-
} catch (t: Throwable) {
126-
android.util.Log.e(TAG, "Error showing logging message.", t)
127141
}
142+
} catch (t: Throwable) {
143+
android.util.Log.e(TAG, "Error showing logging message.", t)
128144
}
129-
130-
callLogListeners(level, message, throwable)
131145
}
132146

133147
private fun callLogListeners(

OneSignalSDK/onesignal/core/src/test/java/com/onesignal/debug/internal/LoggingTests.kt

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import com.onesignal.debug.OneSignalLogEvent
66
import com.onesignal.debug.internal.logging.Logging
77
import io.kotest.core.spec.style.FunSpec
88
import io.kotest.matchers.shouldBe
9+
import io.kotest.matchers.string.shouldEndWith
910

1011
class TestLogLister : ILogListener {
1112
val calls = ArrayList<String>()
@@ -15,6 +16,11 @@ class TestLogLister : ILogListener {
1516
}
1617
}
1718

19+
infix fun <T : Collection<String>> T.shouldHaveEachItemEndWith(expected: Array<String>): T {
20+
this.forEachIndexed { index, it -> it shouldEndWith expected[index] }
21+
return this
22+
}
23+
1824
class LoggingTests : FunSpec({
1925
beforeAny {
2026
Logging.logLevel = LogLevel.NONE
@@ -29,7 +35,7 @@ class LoggingTests : FunSpec({
2935
Logging.debug("test")
3036

3137
// Then
32-
listener.calls shouldBe arrayOf("test")
38+
listener.calls shouldHaveEachItemEndWith arrayOf("test")
3339
}
3440

3541
test("addListener twice") {
@@ -42,7 +48,7 @@ class LoggingTests : FunSpec({
4248
Logging.debug("test")
4349

4450
// Then
45-
listener.calls shouldBe arrayOf("test")
51+
listener.calls shouldHaveEachItemEndWith arrayOf("test")
4652
}
4753

4854
test("removeListener") {
@@ -83,7 +89,7 @@ class LoggingTests : FunSpec({
8389
Logging.debug("test3")
8490

8591
// Then
86-
nestedListener.calls shouldBe arrayOf("test2", "test3")
92+
nestedListener.calls shouldHaveEachItemEndWith arrayOf("test2", "test3")
8793
}
8894

8995
test("removeListener nested") {
@@ -102,6 +108,6 @@ class LoggingTests : FunSpec({
102108
Logging.debug("test2")
103109

104110
// Then
105-
calls shouldBe arrayOf("test")
111+
calls shouldHaveEachItemEndWith arrayOf("test")
106112
}
107113
})

0 commit comments

Comments
 (0)