[Android] 왜 Log.d() 대신 Timber를 써야 할까?

2025. 3. 26. 16:16Android/Android 기초

728x90
반응형

자꾸 Android Studio에서 Log.d를 Timber로 변환하라는 메세지가 뜬다.

대체 Timber가 뭐길래.

1. Log.d()의 단점

1️⃣ 태그를 직접 써야 함

Log.d("MyActivity", "Something happened")

MyActivity 와 같은 TAG를 계속 명시해줘야 한다.

2️⃣ 릴리즈 빌드에서도 로그가 찍힐 수 있음

  • 디버깅용 로그가 사용자 환경에서도 노출될 위험이 있음

3️⃣ 로그 필터링, 커스터마이징 어려움

  • 로그 포맷, 조건부 출력 등 확장성이 떨어짐

2. Timber의 장점

1️⃣ 자동 태그 처리

Timber.d("Hello")

로그에 자동으로 클래스 이름 + 라인 번호가 붙는다.

D/MainActivity: Hello (MainActivity.kt:42)

2️⃣ 릴리즈 빌드에서 로그 자동 제거

if (BuildConfig.DEBUG) {
    Timber.plant(Timber.DebugTree())
}

릴리즈 빌드에서는 DebugTree를 심지 않으면

로그가 아예 출력되지 않음 → 🔒 보안 & 퍼포먼스 모두 이득

3️⃣ 커스텀 트리로 로그 핸들링 가능

Timber.plant(MyCrashReportingTree())
  • 로그를 Crashlytics, Sentry, 파일 등으로 보내는 확장도 쉬움
  • 필터링 로직도 자유롭게 가능

4️⃣ 간결함과 가독성

// Before
Log.e("MyFragment", "Something went wrong", e)

// After
Timber.e(e, "Something went wrong")

 

728x90
반응형