Libindy has a set of wrappers that convert its patterns to comply the best practices of corresponding languages.
There is some more detailed information about these wrappers:
- Java -- Sources -- Samples
- Python -- Sources -- Samples
- Rust -- Sources -- Samples
- iOS -- Sources -- Samples
- NodeJS -- Sources -- Samples
- .NET (not supported right now) -- Sources -- Samples
We have some more examples (they a grouped by usecases, not by languages) here
All wrappers support native logging -- you can read about it in wrapper's readme