// the find
JakeWharton/timber
A logger with a small, extensible API which provides utility on top of Android's normal Log class.
Timber is Jake Wharton's thin logging facade over Android's Log class — plant Tree instances to control where logs go, call Timber.d/e/w everywhere else. It's for Android (and now Kotlin Multiplatform) developers who are tired of writing the same Log wrapper class in every project.
No Trees are planted by default, so if you forget to wire up a release Tree you get silence instead of leaked production logs — the failure mode is safe. The bundled Android Lint checks (TimberArgCount, TimberArgTypes, TimberTagLength, LogNotTimber) catch real bugs like mismatched format-string arguments at build time, not just style nits. DebugTree auto-detects the calling class as the tag, which pairs well with tools like Pidcat and removes a whole category of copy-paste boilerplate. It's a 10-year-old, extremely widely used library with a tiny, stable API, so the upgrade risk is close to zero.
There are zero non-debug Tree implementations shipped — no crash-reporting Tree, no file Tree, nothing — so every team re-implements the same 'send ERROR+ to Crashlytics' Tree from scratch. Logging is pure string formatting; there's no structured/key-value output, which makes wiring it into a modern observability backend (Datadog, OTel) more glue code than you'd expect from a logging library in 2026. It's Android/JVM-first: the commonMain/androidMain split suggests KMP support exists, but the README doesn't document non-Android usage at all, so multiplatform adoption means digging through source rather than docs. It's firmly in maintenance mode — don't expect new features, just occasional dependency bumps and lint-rule tweaks.