An Android library for logging RxJava Observables and Subscribers with annotation-based debugging.
Frodo is an Android library designed to log RxJava Observables and Subscribers during development. It uses annotations to automatically generate logging code that outputs stream data, schedulers, and events to logcat, helping developers debug reactive flows efficiently. The library only activates in debug builds, ensuring no performance impact in production.
Android developers working with RxJava who need to debug reactive streams and understand Observable/Subscriber behavior during development.
Developers choose Frodo for its annotation-driven approach that eliminates manual logging boilerplate, its debug-only safety, and its detailed, customizable output that provides deep insights into RxJava stream execution.
Android Library for Logging RxJava Observables and Subscribers.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Frodo automatically weaves logging code only in debug builds, ensuring no performance impact in production, as emphasized in the README's philosophy and configuration options.
Provides detailed logs for Observable emissions, Subscriber lifecycle, and scheduler usage, with visual examples in the README showing rich logcat output for streams and events.
Reduces manual logging boilerplate by using annotations like @RxLogObservable, making it easy to add logging to existing code, as demonstrated in the code snippets.
Offers fine-grained control with scopes like STREAM and SCHEDULERS, allowing developers to focus on specific debugging aspects, detailed in the README's scope options.
The README admits Frodo does not log from Android Library modules unless forced to debug builds via a workaround, which risks accidental production logging if forgotten.
Frodo is designed for the original RxJava (rx.* packages), and may not support RxJava 2 or 3, limiting its relevance for modern reactive codebases without updates.
Requires adding and configuring a Gradle plugin with dependencies, adding build process overhead that might not integrate seamlessly in all environments or with other tools.