[Android] 왜 Log.d() 대신 Timber를 써야 할까?
2025. 3. 26. 16:16ㆍAndroid/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
반응형
'Android > Android 기초' 카테고리의 다른 글
Parcelize vs Serializable 차이점 한눈에 보기 (0) | 2025.04.02 |
---|---|
Single Activity Architecture(SAA) 전환 시 Navigation 구조 설계 방법 (0) | 2025.03.28 |
android:exported 속성 필수 이유 (Android 12 대응) (0) | 2025.03.24 |
좀비 같은 Activity 처리하기, finish()와 finishAActivity()의 차이 (0) | 2025.03.10 |
안드로이드 모듈 간 리소스 충돌 방지: 리소스 ID와 모듈 의존성 (0) | 2025.03.05 |