Timber pour Kotlin : guide complet avec exemples
1. Qu'est-ce que Timber et pourquoi l'utiliser ?
Timber est une bibliothèque légère de logging pour les applications Android, écrite en Kotlin. Créée par Jake Wharton — l'un des développeurs Android les plus influents, connu pour des projets comme Retrofit, OkHttp et Dagger — son objectif principal est de supprimer le code répétitif lié au logging et d'offrir un mécanisme flexible pour gérer les logs à différentes étapes du développement.
Pourquoi utiliser Timber alors que android.util.Log existe déjà ? D'abord, Timber ajoute automatiquement le nom de la classe et de la méthode dans chaque log, rendant le traçage bien plus pratique. Fini le Log.d(TAG, "message") : il suffit d'appeler Timber.d("message"). Ensuite, Timber propose un système d'« arbres » (Trees) qui permet de répartir les logs sur différents canaux : par exemple, afficher tous les logs dans Logcat en debug, et n'envoyer que les erreurs vers Crashlytics ou un autre service d'analyse en release.
Troisième avantage clé : Timber désactive automatiquement tous les logs dans une build release, sauf si vous avez configuré un arbre dédié à la production. Cela améliore non seulement les performances, mais empêche aussi les fuites de données sensibles via les logs. La bibliothèque est si populaire qu'elle est utilisée dans des milliers de projets commerciaux et recommandée par Google dans ses guides officiels de développement Android.
2. Installation
Timber est distribué via Maven Central. Pour l'installer, ajoutez la dépendance dans votre fichier build.gradle (niveau module) :
dependencies {
implementation 'com.jakewharton.timber:timber:5.0.1'
}
Si vous utilisez Kotlin DSL (build.gradle.kts) :
dependencies {
implementation("com.jakewharton.timber:timber:5.0.1")
}
Après synchronisation de Gradle, la bibliothèque est prête à l'emploi. Notez que Timber ne nécessite aucune permission supplémentaire dans AndroidManifest.xml.
3. Démarrage rapide — exemple minimal fonctionnel
Pour commencer, il faut « planter un arbre » (plant a tree) — enregistrer un gestionnaire de logs. Le plus simple est d'utiliser l'arbre intégré Timber.DebugTree, qui affiche les logs dans Logcat avec un niveau DEBUG ou supérieur :
import timber.log.Timber
class MyApplication : Application() {
override fun onCreate() {
super.onCreate()
if (BuildConfig.DEBUG) {
Timber.plant(Timber.DebugTree())
}
}
}
Maintenant, vous pouvez écrire des logs à n'importe quel endroit de l'application :
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
Timber.d("Activité créée")
Timber.i("Utilisateur a ouvert l'écran principal")
Timber.w("Quelque chose de suspect s'est produit")
Timber.e("Erreur survenue : %s", "Timeout réseau")
}
}
Dans Logcat, vous verrez quelque chose comme :
D/MainActivity: Activité créée
I/MainActivity: Utilisateur a ouvert l'écran principal
W/MainActivity: Quelque chose de suspect s'est produit
E/MainActivity: Erreur survenue : Timeout réseau
Remarque : Timber a automatiquement détecté le nom de la classe (MainActivity) et l'a ajouté comme tag. Plus besoin de créer manuellement une constante TAG.
4. Méthodes / fonctions / classes principales
4.1. Timber.d() — Logging de débogage
Signature : fun d(message: String, vararg args: Any?)
Fonction : Affiche un message de débogage avec le niveau DEBUG. Utilisé pour les logs temporaires pendant le développement. Par défaut, désactivé dans une build release.
Timber. Aussi dans la bibliothèque
mimalloc pour C++ : guide complet avec exemples
Tests en C++ : aperçu des frameworks et outils (Google Test, Catch2, doctest)
Files d'attente de tâches en Swift : GCD, OperationQueue et Swift Concurrency
Traitement JSON en Rust : bibliothèques serde_json et json