Registro para Swift (iOS/macOS): melhores soluções
O registro é uma das ferramentas-chave do desenvolvedor de aplicativos para iOS e macOS. Ele ajuda a rastrear a execução do código, encontrar bugs, analisar o comportamento do usuário e diagnosticar problemas em produção. No ecossistema Swift, existem muitas bibliotecas e abordagens para organizar o registro. Neste artigo, veremos as melhores delas, suas vantagens e exemplos de uso.
Por que o registro é necessário em Swift?
Um registro de qualidade permite:
- Rastrear o fluxo de execução e o estado das variáveis
- Registrar erros e exceções com contexto
- Analisar desempenho e gargalos
- Coletar dados para depuração em produção (através de serviços remotos)
- Simplificar o desenvolvimento em equipe e a revisão de código
Solução integrada: OSLog (os_log)
A partir do iOS 10 / macOS 10.12, a Apple fornece um poderoso framework os_log. Ele é integrado ao sistema, suporta categorias, níveis de importância e filtragem dinâmica no console do Xcode e no aplicativo Console.
import os.log
let logger = OSLog(subsystem: "com.yourapp.networking", category: "APIClient")os_log("Requisição ao servidor: %{public}@", log: logger, type: .info, urlString)
// Níveis: .debug, .info, .default, .error, .faultos_log("Erro de autenticação: %{public}@", log: logger, type: .error, errorMessage)Prós: dependência zero, alto desempenho, suporte Apple. Contras: personalização de saída limitada, dificuldade de integração com serviços em nuvem.
Melhor biblioteca de terceiros: CocoaLumberjack
CocoaLumberjack é o padrão de facto para registro em Swift e Objective-C. Ele é várias vezes mais rápido que o NSLog, suporta gravação assíncrona, rotação de arquivos, vários registradores simultâneos e formatação.
import CocoaLumberjack
// ConfiguraçãoDDLog.add(DDOSLogger.sharedInstance) // Consolelet fileLogger = DDFileLogger()fileLogger.rollingFrequency = 60 * 60 * 24 // 24 horasDDLog.add(fileLogger)
// UsoDDLogDebug("Depuração: \\(someValue)")DDLogInfo("Informação: usuário fez login")DDLogWarn("Aviso: bateria fraca")DDLogError("Erro: falha ao carregar dados")A biblioteca é ativamente mantida, possui uma enorme comunidade e é facilmente configurável para qualquer necessidade.
SwiftyBeaver: saída bonita e análise em nuvem
SwiftyBeaver é uma solução popular com saída colorida no console, suporte ao formato JSON e um serviço de nuvem integrado para coleta de logs em tempo real.
import SwiftyBeaver
let log = SwiftyBeaver.self
// Adiciona destino de consolelet console = ConsoleDestination()log.addDestination(console)
// Opcional: serviço em nuvemlet cloud = SBPlatformDestination(appID: "yourAppID", appSecret: "secret", encryptionKey: "key")log.addDestination(cloud)
log.verbose("Iniciando aplicativo")log.debug("Parâmetros: \\(params)")log.info("Usuário clicou no botão")log.warning("Tempo limite de conexão")log.error("Erro crítico: \\(error)")SwiftyBeaver é ideal para projetos pequenos e médios, onde o conforto visual durante o desenvolvimento é importante.
XCGLogger: flexibilidade e simplicidade
XCGLogger é uma biblioteca leve com ricos recursos de formatação, filtragem por tags e níveis. Suporta saída para arquivo, console e destinos personalizados.
import XCGLogger
let log = XCGLogger.defaultlog.setup(level: .debug, showLogIdentifier: true, showFunctionName: true, showThreadName: true, showLevel: true, showFileNames: true, showLineNumbers: true)
log.debug("Depuração")log.info("Informação")log.error("Erro")Configuração simples e API clara
Também na biblioteca
MetricsKit — monitoramento de aplicativos Swift (iOS/macOS)
Processamento e parsing de Markdown em PHP: bibliotecas e exemplos
Processamento de Imagens em Kotlin: redimensionar e cortar com a biblioteca ImageMagick
Aprendizado de Máquina em JavaScript: bibliotecas para Node.js — visão geral e exemplos
Bibliotecas WebSocket Kotlin para criar tempo real em aplicações web