An extensible Swift logging API that is simple, lightweight, and performant, with first-class support for Apple's Unified Logging System.
CleanroomLogger is a Swift-based logging framework for Apple platforms that provides a simple, lightweight, and performant API for application logging. It solves the problem of inefficient logging that can impact app performance by offloading work to background threads and integrating seamlessly with Apple's Unified Logging System (OSLog).
iOS, macOS, tvOS, and watchOS developers who need a robust, configurable logging solution for debugging, monitoring, and production diagnostics in Swift applications.
Developers choose CleanroomLogger for its blend of high performance, extensibility, and modern Swift design. It offers fine-grained control over logging behavior, supports both human-readable and machine-parsable formats, and automatically adapts to the underlying platform's logging capabilities.
CleanroomLogger provides an extensible Swift-based logging API that is simple, lightweight and performant
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Offloads logging to background threads to prevent UI lag, as detailed in its architectural overview using Grand Central Dispatch queues.
Automatically uses Apple's Unified Logging System on supported platforms (iOS 10.0+, etc.) and falls back to standard streams, ensuring modern logging with backward compatibility.
Supports custom LogRecorders, LogFormatters, and LogFilters, allowing adaptation to various needs like rotating log files or custom output formats, as shown in the FieldBasedLogFormatter examples.
Provides a trace() function that logs call sites, thread info, and function signatures automatically, simplifying debugging without manual message crafting.
Requires explicit enabling and setup early in the app lifecycle (e.g., in app delegate init), which can be error-prone and adds initial development time compared to zero-config frameworks.
Tied to specific Swift versions (e.g., Swift 4.1 in this branch), potentially causing migration issues or incompatibility with newer language releases without updates.
Lacks out-of-the-box support for remote logging or cloud integrations; custom LogRecorder implementations are needed for such use cases, increasing development effort.