(안드로이드/코틀린) 로그 릴리즈/디버그 모드 나누기

안드로이드 로그 릴리즈/디버그 모드 나눠서 찍기

안드로이드 개발을 하다보면 로그를 찍어야 값 확인도 가능하고 디버그하는데도 편리하다. 디버그 모드에서 Log.d()를 찍어놓고 릴리즈 버전 때 하나씩 지우려면 상당히 많은 노력이 수반된다. 디버그 모드를 체크하는 로직을 통해 로그를 찍는 것이 코드 관리 및 성능에도 좋다

실습하기

1단계 Utils() 라는 별도의 클래스 만든다

import android.content.Context
import android.content.pm.ApplicationInfo
import android.util.Log


class Utils(context: Context) {
    private var TAG = "TEST"
    private val isDEBUG =
            (context.packageManager.getApplicationInfo(context.packageName, 0).flags
                    and ApplicationInfo.FLAG_DEBUGGABLE) != 0

    fun logD(message: String) {
        if (isDEBUG) {
            Log.d(TAG, "D MODE $message")
        }
    }

    fun logE(message: String) {
        if (isDEBUG) {
            Log.e(TAG, "E MODE $message")
        }
    }

    fun logI(message: String) {
        if (isDEBUG) {
            Log.i(TAG, "I MODE $message")
        }
    }

    fun logW(message: String) {
        if (isDEBUG) {
            Log.w(TAG, "W MODE $message")
        }
    }

    fun logV(message: String) {
        if (isDEBUG) {
            Log.v(TAG, "V MODE $message")
        }
    }
}

2. 액티비티나 프래그먼트에서 사용

class MainActivity : AppCompatActivity() {
    private val utils: Utils by lazy {
        Utils(this)
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        val navView: BottomNavigationView = findViewById(R.id.nav_view)

        val navController = findNavController(R.id.nav_host_fragment)
        // Passing each menu ID as a set of Ids because each
        // menu should be considered as top level destinations.
        val appBarConfiguration = AppBarConfiguration(setOf(
                R.id.navigation_home, R.id.navigation_dashboard, R.id.navigation_notifications))
        setupActionBarWithNavController(navController, appBarConfiguration)
        navView.setupWithNavController(navController)


        var str = "Kotlin"
        utils.logD("HI $str")
        utils.logI("HI $str")
        utils.logV("HI $str")
        utils.logE("HI $str")
        utils.logW("HI $str")
    }
}

결론



Related Posts