A powerful, lightweight logging library for Swift with customizable log levels, writers, and modifiers.
Willow is a logging library written in Swift for Apple platforms (iOS, macOS, tvOS, watchOS). It provides a performant and flexible way to capture log messages with features like custom log levels, multiple output writers, and thread-safe execution. It solves the need for a modern, Swift-native logging solution that balances simplicity with advanced customization.
Swift developers building applications for Apple ecosystems who need a lightweight, extensible logging library with support for debugging, runtime configuration, and cross-framework logging.
Developers choose Willow for its closure-based performance optimization, thread-safe design, and protocol-driven extensibility, allowing deep customization without sacrificing simplicity. It’s a Swift-first alternative to Objective-C libraries like CocoaLumberjack.
Willow is a powerful, yet lightweight logging library written in Swift.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Uses closures for deferred evaluation, reducing logging overhead by up to 97% when disabled, as proven in the README's performance benchmarks.
Supports up to 32 custom log levels via bitmasking, allowing fine-grained control beyond the five defaults for specialized use cases.
Prevents log mangling with configurable synchronous or asynchronous execution, crucial for debugging multi-threaded applications.
Log modifiers and writers are protocol-based, enabling easy creation of custom formatters (e.g., timestamps, emojis) and output destinations.
Multiple migration guides (2.0 to 5.0) indicate a history of breaking updates, complicating maintenance and upgrades for existing projects.
Only provides ConsoleWriter and OSLogWriter; developers must implement custom writers for common needs like file logging or external services, adding initial setup complexity.
Exclusively built for Swift, making it unsuitable for Objective-C projects or teams with mixed codebases, as acknowledged in the README's FAQ.