Custom Log를 만들어보자

지프치프·2021년 7월 1일
0

Android

목록 보기
2/85
post-thumbnail

“Android 로봇은 Google에서 제작하여 공유한 저작물을 복제하거나 수정한 것으로 Creative Commons 3.0 저작자 표시 라이선스의 약관에 따라 사용되었습니다.”


Log

개발하다보면 Log는 정말 자주 쓰인다.
값이 잘 들어갔는지 아니면 원하는 지점에 진입은 했는지 등
내부적으로 확인이 필요할 때 많이 쓴다.

기본제공되는 Log

안드로이드에선 기본적으로 Log를 제공한다.
android.util.Log 로 제공되는 클래스가 그것인데,

Log.d(TAG, message)

이런 형태로 사용된다.
하지만 자주 사용되는 놈이다보니 로그 하나 찍을때마다
TAG를 일일이 넣어주는 것이 여간 귀찮은 것이 아니다.
그래서 TAG를 하나로 통일하고 조금 이쁘게 다듬어주는 것이
logcat에서 보기도 훨씬 수월하다.
logcat에서 폭포마냥 쏟아디는 Log들을 보면 머리가 복잡해진다.

Custom 해보자

class MyLogger {
    companion object{
        const val TAG ="Custom Log" //태그 이름

	//debug
        fun d(message : String) {
            Log.d(TAG, buildLogMsg(message))
        }

	//Verbose
        fun v(message : String) {
            Log.v(TAG, buildLogMsg(message))
        }
        
        //info
        fun i(message : String) {
            Log.i(TAG, buildLogMsg(message))
        }

	//Warning
        fun w(message : String) {
            Log.w(TAG, buildLogMsg(message))
        }

	//Error
        fun e(message : String) {
            Log.e(TAG, buildLogMsg(message))
        }

        fun buildLogMsg(message : String) : String {
            val ste = Thread.currentThread().stackTrace[4]
            val sb = StringBuilder()
            sb.append("[")
            sb.append(ste.fileName.replace(".java", "", false))
            sb.append("::")
            sb.append(ste.methodName)
            sb.append("]")
            sb.append(message)
            return sb.toString()
        }
    }
}

먼저 buildLogMsg 메소드에서
Log의 헤더(?)를 다듬고 메세지를 붙인 다음
각 메세지에서 TAG와 함께 출력해준다.

그리고 이걸 사용하면

MyLogger.i("My Logging Message")

TAG를 일일이 같이 넣어주었던 기존에 비하면
눈물나는 간편함을 느낄 수 있다.
printf() 뺨치는 편안함

한번 만들어두면 프로젝트 새로 만들어도
import만 해주면 되니
한번쯤은 만들어 두는 것도 유용할 것이다.

개인적으로 공부했던 것을 바탕으로 작성하다보니
잘못된 정보가 있을수도 있습니다.
인지하게 되면 추후 수정하겠습니다.
피드백은 언제나 환영합니다.
읽어주셔서 감사합니다.

profile
지프처럼 거침없는 개발을 하고싶은 개발자

0개의 댓글