Table of contents
Log 를 위한 TAG
만드는 방법 비교
this::class
는 reflection 을 사용해서 성능상 좋지 않다고 한다. 참고:StackOverflow
private const val TAG1 = "HabitLayer"
class HabitLayer {
companion object {
private val TAG2 = this::class.qualifiedName
private val TAG3 = this::class.simpleName
}
private val TAG4 = javaClass.name
private val TAG5 = javaClass.canonicalName
private val TAG6 = javaClass.simpleName
init {
arrayOf(TAG1, TAG2, TAG3, TAG4, TAG5, TAG6).forEach { Log.i("TAG_TEST", "$it") }
}
}
결과
I/HabitLayer: HabitLayer
I/HabitLayer: com.obplanner.calendarview.month.layers.HabitLayer.Companion
I/HabitLayer: Companion
I/HabitLayer: com.obplanner.calendarview.month.layers.HabitLayer
I/HabitLayer: com.obplanner.calendarview.month.layers.HabitLayer
I/HabitLayer: HabitLayer
Timber
환경별로 다른 로그 시스템을 설정할 수 있다
if (BuildConfig.DEBUG) {
Timber.plant(DebugTree())
} else {
Timber.plant(ProductionTree())
}
Firebase 의 Crashlytics 로그 처리 가능
class ProductionTree : Timber.Tree() {
override fun log(priority: Int, tag: String?, message: String, t: Throwable?) {
if (priority > Log.DEBUG) {
FirebaseCrashlytics.getInstance().log("$tag: $message")
}
}
}