Registro en aplicaciones Swift: mejores prácticas

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

Introducción: ¿Por qué es necesario el logging en Swift?



El logging es una herramienta fundamental para el desarrollador que permite rastrear el estado de la aplicación, identificar errores y analizar el comportamiento del usuario. En el ecosistema Swift (iOS/macOS), un logging bien configurado puede ahorrar horas de depuración y ayudar a evitar problemas en las versiones de producción.



En este artículo, analizaremos las mejores prácticas de logging en Swift: desde las soluciones integradas de Apple hasta las bibliotecas de terceros más populares. Aprenderás cómo no sobrecargar la aplicación, cómo proteger datos sensibles y cómo hacer que los logs sean útiles para todo el equipo.



1. Herramientas integradas: OSLog y print



1.1 Por qué print() es malo



La forma más sencilla de hacer logging es el comando print(). Sin embargo, no se recomienda usarlo en la versión de producción:

  • No tiene niveles de importancia (info, warning, error).
  • No es posible filtrar logs en la consola de Xcode.
  • El texto se muestra incluso en la compilación de lanzamiento (si no se elimina manualmente).
  • No hay estructuración de datos.


1.2 OSLog — el estándar de Apple



A partir de iOS 10 y macOS 10.12, Apple recomienda usar os_log del framework os.log. Es un mecanismo integrado que funciona de forma rápida y segura.



import os.log

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

func fetchData() { logger.info("Inicio de la carga de datos") // ... código de carga logger.warning("El servidor respondió con retraso") // ... manejo de errores logger.error("No se pudo conectar al servidor: \\(error.localizedDescription)")}


Ventajas de OSLog:

  • Desactivación automática en compilaciones de lanzamiento (excepto errores).
  • Soporte para categorías y subsistemas para filtrar.
  • Integración con Console.app y Xcode.
  • Seguridad: los datos privados se ocultan automáticamente (marcador private).


2. SwiftLog — API universal



2.1 ¿Qué es SwiftLog?



SwiftLog es una biblioteca open-source de Apple que proporciona una interfaz unificada para el logging. No depende de la plataforma y permite conectar diferentes backends (OSLog, archivos, servidores).



2.2 Instalación y configuración



Añade SwiftLog a través de Swift Package Manager:



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


Ejemplo de uso:



import Logging

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

logger.info("Aplicación iniciada")logger.warning("Batería baja: \\(batteryLevel)%")logger.error("Error crítico: \\(error)")

// Configuración del nivel de loggingLoggingSystem.bootstrap { label in var handler = StreamLogHandler.standardOutput(label: label) handler.logLevel = .debug return handler}


Características clave:

  • Niveles: trace, debug, info, notice, warning, error, critical.
  • Metadatos (cualquier campo adicional).
  • Backend fácilmente reemplazable (por ejemplo, para enviar a Crashlytics).
  • Costo cero cuando el nivel está desactivado (más rápido que print).


3. Bibliotecas de terceros: CocoaLumberjack y Pulse



3.1 CocoaLumberjack — flexibilidad y potencia



Una de las bibliotecas más populares para Objective-C y Swift. Permite escribir logs en archivos, consola, servidor remoto e incluso en una base de datos.



import CocoaLumberjack

// ConfiguraciónDDLog.add(DDOSLogger.sharedInstance) // Consolalet fileLogger = DDFileLogger()fileLogger.rollingFrequency = 60 * 60 * 24 // 24 horasDDLog.add(fileLogger)

// UsoDDLogInfo("Usuario autenticado")DDLogWarn("Tiempo de espera de red agotado")DDLogError("

Blogs

Book Recommendations