Journalisation dans les applications Swift : meilleures pratiques

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Introduction : Pourquoi journaliser en Swift ?



La journalisation est un outil fondamental pour le développeur, permettant de suivre l'état d'une application, d'identifier les erreurs et d'analyser le comportement des utilisateurs. Dans l'écosystème Swift (iOS/macOS), une journalisation bien configurée peut faire gagner des heures de débogage et aider à éviter des problèmes dans les versions de production.



Dans cet article, nous allons passer en revue les meilleures pratiques de journalisation en Swift : des solutions intégrées d'Apple aux bibliothèques tierces populaires. Vous apprendrez comment ne pas surcharger l'application, comment protéger les données sensibles et comment rendre les logs utiles pour toute l'équipe.



1. Outils intégrés : OSLog et print



1.1 Pourquoi print() est une mauvaise pratique



La méthode la plus simple de journalisation est la commande print(). Cependant, il est déconseillé de l'utiliser dans une version de production :

  • Pas de niveaux d'importance (info, warning, error).
  • Impossible de filtrer les logs dans la console Xcode.
  • Le texte est affiché même dans la build de release (s'il n'est pas supprimé manuellement).
  • Pas de structuration des données.


1.2 OSLog — la norme d'Apple



Depuis iOS 10 et macOS 10.12, Apple recommande d'utiliser os_log du framework os.log. C'est un mécanisme intégré, rapide et sécurisé.



import os.log

let logger = Logger(subsystem: "com.example.myapp", category: "network")

func fetchData() { logger.info("Début du chargement des données") // ... code de chargement logger.warning("Le serveur a répondu avec un délai") // ... gestion d'erreur logger.error("Impossible de se connecter au serveur : \\(error.localizedDescription)")}


Avantages d'OSLog :

  • Désactivation automatique dans les builds de release (sauf pour les erreurs).
  • Support des catégories et sous-systèmes pour le filtrage.
  • Intégration avec Console.app et Xcode.
  • Sécurité : les données privées sont automatiquement masquées (marqueur private).


2. SwiftLog — une API universelle



2.1 Qu'est-ce que SwiftLog ?



SwiftLog est une bibliothèque open-source d'Apple qui fournit une interface unifiée pour la journalisation. Elle est indépendante de la plateforme et permet de connecter différents backends (OSLog, fichiers, serveurs).



2.2 Installation et configuration



Ajoutez SwiftLog via Swift Package Manager :



// Package.swiftdependencies: [    .package(url: "https://github.com/apple/swift-log.git", from: "1.5.0")]


Exemple d'utilisation :



import Logging

let logger = Logger(label: "com.example.app")

logger.info("Application démarrée")logger.warning("Batterie faible : \\(batteryLevel)%")logger.error("Erreur critique : \\(error)")

// Configuration du niveau de journalisationLoggingSystem.bootstrap { label in var handler = StreamLogHandler.standardOutput(label: label) handler.logLevel = .debug return handler}


Fonctionnalités clés :

  • Niveaux : trace, debug, info, notice, warning, error, critical.
  • Métadonnées (tout champ supplémentaire).
  • Backend facilement remplaçable (par exemple, pour l'envoi vers Crashlytics).
  • Coût nul lorsque le niveau est désactivé (plus rapide que print).


3. Bibliothèques tierces : CocoaLumberjack et Pulse



3.1 CocoaLumberjack — flexibilité et puissance



L'une des bibliothèques les plus populaires pour Objective-C et Swift. Elle permet d'écrire des logs dans des fichiers, la console, un serveur distant et même une base de données.



import CocoaLumberjack

// ConfigurationDDLog.add(DDOSLogger.sharedInstance) // Consolelet fileLogger = DDFileLogger()fileLogger.rollingFrequency = 60 * 60 * 24 // 24 heuresDDLog.add(fileLogger)

// UtilisationDDLogInfo("Utilisateur authentifié")DDLogWarn("Timeout réseau")DDLogError("

Blogs

Book Recommendations