Skip to content

Commit 8a3b734

Browse files
committed
Fix Timber and Logger integration problem
1 parent 098d833 commit 8a3b734

4 files changed

Lines changed: 46 additions & 55 deletions

File tree

app/src/main/java/com/enginebai/project/AppContext.kt

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,18 @@
11
package com.enginebai.project
22

33
import android.app.Application
4+
import com.enginebai.base.di.gsonModule
45
import com.enginebai.base.di.loggingModule
56
import com.enginebai.base.di.networkModule
7+
import com.orhanobut.logger.AndroidLogAdapter
8+
import com.orhanobut.logger.FormatStrategy
69
import com.orhanobut.logger.Logger
710
import org.koin.android.ext.android.get
811
import org.koin.android.ext.koin.androidContext
912
import org.koin.android.ext.koin.androidLogger
1013
import org.koin.core.context.startKoin
1114
import org.koin.core.logger.Level
15+
import org.koin.core.parameter.parametersOf
1216
import timber.log.Timber
1317

1418
class AppContext : Application() {
@@ -23,12 +27,14 @@ class AppContext : Application() {
2327
startKoin {
2428
androidLogger(level = Level.INFO)
2529
androidContext(this@AppContext)
26-
modules(listOf(networkModule, loggingModule))
30+
modules(listOf(gsonModule, networkModule, loggingModule))
2731
}
2832
}
2933

3034
private fun initLogging() {
31-
Logger.addLogAdapter(get())
35+
val formatStrategy: FormatStrategy = get()
36+
val logAdapter: AndroidLogAdapter = get { parametersOf(formatStrategy) }
37+
Logger.addLogAdapter(logAdapter)
3238
Timber.plant(get())
3339
}
3440
}
Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,34 @@
11
package com.enginebai.base.di
22

33
import com.enginebai.base.BuildConfig
4-
import com.enginebai.base.utils.logging.MyCustomLoggingDebugTree
4+
import com.enginebai.base.utils.logging.TimberLoggerDebugTree
5+
import com.google.gson.Gson
56
import com.orhanobut.logger.AndroidLogAdapter
6-
import com.orhanobut.logger.LogAdapter
7+
import com.orhanobut.logger.FormatStrategy
8+
import com.orhanobut.logger.PrettyFormatStrategy
79
import org.koin.dsl.module
810
import timber.log.Timber
911

1012
val loggingModule = module {
11-
single<LogAdapter> {
12-
object : AndroidLogAdapter() {
13+
single<AndroidLogAdapter> { (formatStrategy: FormatStrategy) ->
14+
object : AndroidLogAdapter(formatStrategy) {
1315
override fun isLoggable(priority: Int, tag: String?): Boolean {
1416
return BuildConfig.DEBUG
1517
}
1618
}
1719
}
1820

19-
single<Timber.Tree> { MyCustomLoggingDebugTree() }
21+
single<FormatStrategy> {
22+
PrettyFormatStrategy.newBuilder()
23+
.tag("enginebai")
24+
.methodCount(3)
25+
.methodOffset(5) // avoid timber internal stack track
26+
.build()
27+
}
28+
29+
single<Timber.Tree> { TimberLoggerDebugTree() }
30+
}
31+
32+
val gsonModule = module {
33+
single { Gson() }
2034
}

base/src/main/java/com/enginebai/base/utils/logging/MyCustomLoggingDebugTree.kt

Lines changed: 0 additions & 48 deletions
This file was deleted.
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package com.enginebai.base.utils.logging
2+
3+
import android.util.Log
4+
import com.orhanobut.logger.Logger
5+
import timber.log.Timber
6+
7+
class TimberLoggerDebugTree : Timber.DebugTree() {
8+
9+
override fun log(priority: Int, tag: String?, message: String, t: Throwable?) {
10+
when (priority) {
11+
Log.VERBOSE -> Logger.v(message)
12+
Log.DEBUG -> Logger.d(message)
13+
Log.INFO -> Logger.i(message)
14+
Log.WARN -> Logger.w(message)
15+
Log.ERROR -> Logger.e(t, message)
16+
else -> Logger.wtf(message)
17+
}
18+
}
19+
}

0 commit comments

Comments
 (0)