매번 빈벅하게 사용하는 Log.d(TAG, "message") 를 조금더 쉽게 사용할 수 있는 유틸리티, 디버그 로그시에 Logcat 창에 해당 클래스명이 나와 클릭하면 바로 이동이 가능하다.


import android.util.Log

object Dlog {
    private fun tag(): String? {
        return Thread.currentThread().stackTrace[4].let {
            val link = "(${it.fileName}:${it.lineNumber})"
            val path = "App# ${it.className.substringAfterLast(".")}.${it.methodName}"
            if (path.length + link.length > 80) {
                "${path.take(80 - link.length)}...${link}"
            } else {
                "${path}${link}"
            }
        }
    }
    fun v(msg: String?) {
        Log.v(tag(), "" + msg)
    }
    fun d(msg: String?) {
        Log.d(tag(), "" + msg)
    }
    fun i(msg: String?) {
        Log.i(tag(), "" + msg)
    }
    fun w(msg: String?) {
        Log.w(tag(), "" + msg)
    }
    fun w(e: Throwable?) {
        Log.w(tag(), "" + e?.localizedMessage)
    }
    fun w(e: Exception?) {
        Log.w(tag(), "" + e?.localizedMessage)
    }
    fun e(msg: String?) {
        Log.e(tag(), "" + msg)
    }
}

아래와 같이 로그를 찍고 logcat 창에서 확인해보자, 친절하게 log 찍을 유틸리티 클래스명에 나와 클릭하면 바로 이동 가능함을 확인할 수 있다.


Dlog.d("log here!")