Timber 에 대해 알아보자

Assist·2023년 7월 25일
0

Android

목록 보기
4/21

Timber

Timber을 알아보기 이전 저를 포함한 Android 개발자 분들 Log 어떻게 쓰셨어요 ?

왜 Timber 인가

분명 이렇게 쓰셨을 겁니다.

class MainActivity : Appcompactivity() { 

	private val Tag = "MainActivity" 
    
    override fun onCreate(){
    	Log.d(Tag, "The MainActivity is Create") 
    }

이런식으로 쓰셨을 겁니다.

근데 해당된 Tag 만 보고싶으면 어떻게 해야할까요?

Android Studio IDE 에 Logcat 에 가 Filter 에 Tag 을 일일이 추가를 해줘야 할겁니다.

그럼 Timber은 무엇이냐

이전에 만든 Tag을 만들필요 없이 이렇게 하면 됩니다.

Timber.d("The MainActivity is Create")

Tag 가 사라졌습니다.

그리고 Android Studio IDE 에 Logcat에 가서 Filter에 Timber 만 추가 하면 됩니다.

Timber을 추가해 봅시다.

일단 라이브러리를 추가합니다

    implementation 'com.jakewharton.timber:timber:5.0.1'

제가 글을 쓸떄는 5.0.1 버전이 최신 버전이었는데 여러분들이 볼때는 어떤 버전이 최신일지는 모르겠네요

그리고 Timber 을 추가해줍니다.

class TimberDebugTree : Timber.DebugTree () {
    private val filterName = "TIMBER"
    
    override fun createStackElementTag(element: StackTraceElement): String? {
        return "${filterName}(${element.fileName})"
    }
}


    

Timber은 모든 Activity , Fragment , etc class 에 추가를 해야합니다.

그럼 제일 상위 class 은 무엇일까요 ?

바로 MainApplication 입니다.

class MainApplication : Application() {

	override fun onCreate() {
    	super.onCreate()
        Timber.plant(TimberDebugTree())
   } 

이런식으로 구현합니다. 그후 AndroidManifest.xml 로 갑니다.

    <application
      android:name="MainApplication"
      ~~~

이런식으로 MainApplication 을 추가해줍니다.

자 이제 Logcat 을 추가 해야지요 이전 TimberDebugTree 에 추가한 Filter 변수 추가 한거 기억 하세요? 변수의 값을 그대로
복사해 옵니다.

이런식으로 추가 해주고 okay을 눌러줍니다.

아 참고로 Create New Logcat Filter 은 어떻게 들어가는가?

우측 상단위에 TIMBER 보이세요 ? 저기를 클릭하면 Edit Filter configuration 을 클릭하면 다이얼로그 창이 뜹니다.

자 그럼 이제 일일이 Tag 을 추가할필요가 사라집니다.

그리고 일일이 Log을 칠때마다

Log.d(Tag , "블라블라")

이런식으로 Tag 을 일일이 타이핑 할 필요도 없고 Tag 변수를 선언할 필요가 없습니다.

아 참고로 이런분들도 있으실겁니다.

??? : 난 로그도 일일이 저장하고 싶어요! 

이런분들을 위한 함수도 있습니다.

class TimberDebugTree : Timber.DebugTree() {
    private val filterName = "TIMBER"

    override fun createStackElementTag(element: StackTraceElement): String? {
        return "${filterName}(${element.fileName})"
    }

    override fun log(priority: Int, tag: String?, message: String, t: Throwable?) {
        super.log(priority, tag, message, t)
      	여기에 로그 저장 함수를 추가하시면 됩니다. 
    }

저 함수를 추가하면 log을 추가할때마다 호출되는 함수가 생성됩니다.

그럼 오늘도 읽어주셔서 감사합니다

-피드백와 비판은 언제나 환영입니다-

profile
안드로이드만 좋아하는 특이한 개발자

0개의 댓글