@@ -5,12 +5,8 @@ package io.github.kdroidfilter.webview.util
55 *
66 * Keep logging simple and dependency-free across platforms.
77 */
8- internal object KLogger {
9- private var minSeverity: KLogSeverity = KLogSeverity .None
10-
11- fun setMinSeverity (severity : KLogSeverity ) {
12- minSeverity = severity
13- }
8+ interface KLogger {
9+ fun setMinSeverity (severity : KLogSeverity )
1410
1511 fun d (tag : String? = null, msg : () -> String ) = log(KLogSeverity .Debug , tag, null , msg)
1612
@@ -20,7 +16,46 @@ internal object KLogger {
2016
2117 fun e (t : Throwable ? = null, tag : String? = null, msg : () -> String ) = log(KLogSeverity .Error , tag, t, msg)
2218
23- private fun log (severity : KLogSeverity , tag : String? , t : Throwable ? , msg : () -> String ) {
19+ fun log (severity : KLogSeverity , tag : String? , t : Throwable ? , msg : () -> String )
20+
21+
22+ companion object : KLogger {
23+ private val loggers = mutableListOf<KLogger >(DefaultKLogger )
24+
25+ fun addLogger (logger : KLogger ) {
26+ loggers.add(logger)
27+ }
28+
29+ fun removeLogger (logger : KLogger ) {
30+ loggers.remove(logger)
31+ }
32+
33+ override fun setMinSeverity (severity : KLogSeverity ) {
34+ for (i in loggers) {
35+ i.setMinSeverity(severity)
36+ }
37+ }
38+
39+ override fun log (
40+ severity : KLogSeverity ,
41+ tag : String? ,
42+ t : Throwable ? ,
43+ msg : () -> String
44+ ) = loggers.forEach {
45+ it.log(severity, tag, t, msg)
46+ }
47+
48+ }
49+ }
50+
51+ internal object DefaultKLogger : KLogger {
52+ private var minSeverity: KLogSeverity = KLogSeverity .None
53+
54+ override fun setMinSeverity (severity : KLogSeverity ) {
55+ minSeverity = severity
56+ }
57+
58+ override fun log (severity : KLogSeverity , tag : String? , t : Throwable ? , msg : () -> String ) {
2459 if (severity.ordinal < minSeverity.ordinal) return
2560 val prefix = buildString {
2661 append(" [ComposeWebView]" )
0 commit comments