Registro para Swift (iOS/macOS): melhores soluções
O registro é uma parte essencial do desenvolvimento de qualquer aplicativo. Para Swift (iOS/macOS), existem muitas ferramentas que permitem rastrear erros de forma eficiente, depurar código e analisar o comportamento do aplicativo. Neste artigo, veremos as melhores bibliotecas e soluções integradas para registro, suas características, vantagens e exemplos de uso.
Por que o registro é necessário em Swift?
O registro ajuda os desenvolvedores a:
- Acompanhar a execução do código em tempo real.
- Identificar e corrigir erros nos estágios iniciais.
- Analisar o desempenho do aplicativo.
- Coletar dados para auditoria posterior.
Solução integrada: OSLog (Unified Logging)
A partir do iOS 10 e macOS Sierra, a Apple apresentou o OSLog — um poderoso sistema de registro integrado aos sistemas operacionais. Ele oferece alto desempenho e segurança.
Exemplo de uso do OSLog
import os.log
let log = OSLog(subsystem: "com.example.app", category: "network")os_log("Requisição enviada: %@", log: log, type: .info, "https://api.example.com")
// Para errosos_log("Erro de conexão: %@", log: log, type: .error, error.localizedDescription)Vantagens do OSLog:
- Não requer instalação de bibliotecas de terceiros.
- Funciona em nível de sistema, suporta filtragem no Console.app.
- Criptografa automaticamente os dados em modo de produção.
SwiftyBeaver — logger multiplataforma
SwiftyBeaver é uma das bibliotecas de registro mais populares em Swift. Ela suporta iOS, macOS, tvOS e watchOS. Principais recursos: saída colorida no console, gravação em arquivos, envio para serviços em nuvem (por exemplo, Loggly, Elasticsearch).
Instalação via Swift Package Manager
// Em Package.swiftdependencies: [ .package(url: "https://github.com/SwiftyBeaver/SwiftyBeaver.git", from: "2.0.0")]Exemplo de uso do SwiftyBeaver
import SwiftyBeaver
let log = SwiftyBeaver.self
// Configuração de destinoslet console = ConsoleDestination() // saída no consolelet file = FileDestination() // gravação em arquivo
// Formataçãoconsole.format = "$DHH:mm:ss$d $L $N.$F:$l - $M"
// Adicionando destinoslog.addDestination(console)log.addDestination(file)
// Registrolog.info("Aplicativo iniciado")log.error("Erro ao carregar dados: \\(error.localizedDescription)")Características do SwiftyBeaver:
- Suporte a codificação por cores dos níveis (verbose, debug, info, warning, error).
- Possibilidade de enviar logs para o servidor via HTTP.
- Configuração flexível do formato de saída.
XCGLogger — logger leve para iOS/macOS
XCGLogger é outra solução popular, focada em simplicidade e velocidade. Ideal para projetos pequenos e prototipagem rápida.
Exemplo de uso do XCGLogger
import XCGLogger
let log = XCGLogger.default
// Configuraçãolog.setup(level: .debug, showLogIdentifier: false, showFunctionName: true, showThreadName: true, showLevel: true, showFileNames: true, showLineNumbers: true, showDate: true)
// Registrolog.debug("Depuração: valor x = \\(x)")log.warning("Aviso: nível baixo de bateria")Vantagens do XCGLogger:
- Número mínimo de dependências.
- Suporte a filtragem por níveis de registro.
- Possibilidade de integração com Crashlytics e outros serviços.