Package selection guidance compiled from public package information, community data, and project usage.
surf_logger is a production-ready logging package for Dart and Flutter, designed to provide structured, reliable, and configurable logging across multiple platforms. It supports rich log formatting, filtering, and integration with external services, making it ideal for debugging and monitoring in real-world applications. The package is maintained by surf.ru and offers seamless setup via pub.dev. With support for Android, iOS, Web, macOS, Windows, and Linux, it ensures consistent logging behavior regardless of deployment environment.
Use cases
Real-time app debugging
Error tracking in production
Performance monitoring
Integration with analytics platforms
Centralized log management
Cross-platform consistency
Key features
Structured log output
Configurable log levels
Platform-agnostic design
Extensible formatter support
Built-in performance metrics
Support for custom log sinks
Suitable for
Production-grade Flutter apps
Teams requiring robust logging
Apps needing cross-platform logging
Developers focused on observability
Projects integrating with backend logging services
Large-scale application maintenance
Considerations
Requires configuration for optimal use
May increase app size slightly
Depends on external dependencies for advanced features
Logging overhead should be monitored in performance-critical scenarios
Not intended for simple debug prints
Best used with log aggregation tools
Original README
Original README snapshot from the linked source repository. Visit the repository for the latest content.
Please note that Logger is a class for configuration, while LogWriter is for usage. This way, we provide access only to the necessary methods for logging, namely log, e, and w.
For instance, the following methods will be available to an instance of LogWriter:
And an instance of Logger will have configuration management methods available. It's important to avoid using this class for other purposes, as it could potentially disrupt the configuration.
Starting from version 2.0.0, the logger is no longer a singleton. Now, you need to create an instance of the logger.
RemoteLogger has been removed. Use LogStrategy to create any required strategy.
All notable changes to this project will be documented in this file.
Issues
To report your issues, file directly in the Issues section.
Contribute
If you would like to contribute to the package (e.g. by improving the documentation, fixing a bug or adding a cool new feature), please read our contribution guide first and send us your pull request.
Your PRs are always welcome.
How to reach us
Please feel free to ask any questions about this package. Join our community chat on Telegram. We speak English and Russian.