Timber para Kotlin: guía completa con ejemplos prácticos

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Timber para Kotlin: guía completa con ejemplos prácticos

1. ¿Qué es Timber y por qué usarlo?

Timber es una librería ligera de logging para aplicaciones Android, escrita en Kotlin. Fue creada por Jake Wharton, uno de los desarrolladores Android más influyentes, conocido por proyectos como Retrofit, OkHttp y Dagger. El objetivo principal de Timber es eliminar el código repetitivo al hacer logging y ofrecer un mecanismo flexible para gestionar los registros en diferentes etapas del desarrollo.

¿Para qué usar Timber si ya existe android.util.Log? Primero, Timber añade automáticamente el nombre de la clase y el método en cada log, facilitando enormemente la trazabilidad. Ya no necesitas escribir Log.d(TAG, "mensaje") — basta con llamar a Timber.d("mensaje"). Segundo, Timber incorpora un sistema de "árboles" (Trees) que permite dividir los logs en diferentes canales: por ejemplo, en la compilación debug mostrar todo en Logcat, y en la compilación release enviar solo errores a Crashlytics u otro servicio de análisis.

Una tercera ventaja clave es que Timber desactiva automáticamente todos los logs en la compilación release si no has configurado un árbol especial para producción. Esto no solo mejora el rendimiento, sino que también evita la filtración de datos sensibles a través de los logs. La librería es tan popular que se usa en miles de proyectos comerciales y es recomendada por Google en las guías oficiales de desarrollo Android.

2. Instalación

Timber se distribuye a través de Maven Central. Para instalarlo, agrega la dependencia en tu archivo build.gradle (nivel de módulo):

dependencies {
    implementation 'com.jakewharton.timber:timber:5.0.1'
}

Si usas Kotlin DSL (build.gradle.kts):

dependencies {
    implementation("com.jakewharton.timber:timber:5.0.1")
}

Después de sincronizar Gradle, la librería está lista para usar. Nota: Timber no requiere permisos adicionales en AndroidManifest.xml.

3. Inicio rápido — ejemplo mínimo funcional

Para empezar, necesitas "plantar un árbol" (plant a tree) — registrar un manejador de logs. La forma más sencilla es usar el árbol incorporado Timber.DebugTree, que muestra los logs en Logcat con nivel DEBUG o superior:

import timber.log.Timber

class MyApplication : Application() {
    override fun onCreate() {
        super.onCreate()
        if (BuildConfig.DEBUG) {
            Timber.plant(Timber.DebugTree())
        }
    }
}

Ahora puedes escribir logs desde cualquier parte de la aplicación:

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        
        Timber.d("Actividad creada")
        Timber.i("El usuario abrió la pantalla principal")
        Timber.w("Algo sospechoso ocurrió")
        Timber.e("Error ocurrido: %s", "Tiempo de espera de red agotado")
    }
}

En Logcat verás algo como esto:

D/MainActivity: Actividad creada
I/MainActivity: El usuario abrió la pantalla principal
W/MainActivity: Algo sospechoso ocurrió
E/MainActivity: Error ocurrido: Tiempo de espera de red agotado

Observa que Timber detectó automáticamente el nombre de la clase (MainActivity) y lo añadió como etiqueta. Ya no necesitas crear manualmente una constante TAG.

4. Métodos, funciones y clases principales

4.1. Timber.d() — Logging de depuración

Firma: fun d(message: String, vararg args: Any?)

Qué hace: Muestra un mensaje de depuración con nivel DEBUG. Se usa para logs temporales durante el desarrollo. En la compilación release no se muestra por defecto.

Timber.                    

Recommendations