Glider
✈️ Universal Logging - low overheaded simple & flexible for Swift (iOS, macOS, tvOS)
Install / Use
/learn @immobiliare/GliderREADME
Glider is the logger for just about everything! It's designed to be:
- SIMPLE: with a modular & extensible architecture, fully documented
- PERFORMANT: you can use Glider without the worry of impacting your app performances
- UNIVERSAL: it supports 14+ transports to satisfy every need; you can create your transport too!
Why logging?
Logging and monitoring are fundamental parts of our job as engineers.
Especially in the mobile world (with very heterogeneous environments), you'll often find yourself in a situation where understanding how your software behaves in production is essential.
That's the right job for logging: logged data provide valuable information that would be difficult to gather otherwise, unveil unexpected behaviors and bugs, and even if the data was adequately anonymized, identify the sequences of actions of singular users.
Feature highlights
We loved making this open-source package and would see engineers like you using this software.
Those are five reasons you will love Glider:
- 🧩 14+ built-in, fully customizable transports to store your data (ELK, HTTP, Logstash, SQLite, WebSocket, Console, File/Rotating Files, POSIX, swift-log, sentry.io...)
- ✏️ 7+ customizable formatters for log messages (JSON, Fields based), MsgPack, Syslog)...)
- 🚀 A simple API set with an extensible architecture to suit your need
- 📚 A fully documented code via Apple's DocC (link)
- ⚙️ An extensive unit test suite
What you get
Creating a logger is simple.
Each logger is an instance of the Log class; typically, you need to specify one or more transports (where the data is stored).
let logger = Log {
$0.subsystem = "com.my-awesome-app"
$0.category = "ui-events"
$0.level = .info
$0.transports = [ConsoleTransport()]
}
The following logger shows received messages - only warning or more severe - in the console.
// Logs an error (including stack trace)
logger.error?.write("Unexpected error has occurred!",
extra: ["reason": error.localizedDescription, "info": extraInfoDict])
// Logs an event with a set of attached details
logger.info?.write {
$0.message = "User tapped Buy button"
$0.object = encodableProduct
$0.extra = ["price": price, "currency": currency]
$0.tags = ["productId", pID]
}
Transports
This the list of transport services officially supported.
Third party transports are available into the following separate repositories:
- Glider-ELK: library provides a logging transport for glider and ELK stacks.
- Glider-Sentry: provides support to post log on sentry.io instances using the native swift sdk.
- Glider-AppleSwiftLog can also work as a backend for apple/swift-log.
A separate transport is able to capture automatically every network request and forward to other transports:
- Glider-NetWatcher offers the ability to capture your app's network traffic (including requests/responses) and redirect them to a specific transport.
APIs
Glider is fully documented at source-code level. You'll get autocomplete with doc inside XCode for free; moreover, you can read the full Apple's DoCC Documentation automatically generated by Swift Package Index project from here:
👉 API REFERENCE
👉 PROJECT PAGE
Guide
The following manual will guide you through using Glider for your project.
Introduction
- The Logger
- Writing messages
- Message text composition
- Disabling a Logger
- Severity Levels
- Synchronous and Asynchronous Logging
Event Formatters
Data Transports
Test Suite
Glider offers an extensive suite of unit tests for Glider Core Logger and third-party packages under the /Tests folder.
Moreover, the entire package is powered by SwiftLint for better code quality.
Contribute
If you want to join this project, we're maintaining a list of new features we would like to implement into the following versions of Glider. Please open an issue and discuss one of them with us!
- [ ] GliderViewer: a macOS, iPad & iPhone app to view and interact with logged data
- [ ] New Transports: we would like to extend the list of supp
Related Skills
node-connect
345.4kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
104.6kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
345.4kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
345.4kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
