A Ruby library for generating structured logs in key=value format, treating logs as data for infrastructure monitoring.
Scrolls is a Ruby library for generating structured logs in the `key=value` format, making logs machine-readable and easier to parse. It originated from internal logging methods at Heroku and provides a simple API for adding context, logging exceptions, and customizing output. The library treats logs as data to offer real-time insights into system behavior.
Ruby developers and teams building applications that require structured, parseable logging for monitoring and debugging, especially in infrastructure or production environments.
Developers choose Scrolls for its simplicity, structured output, and Heroku-inherited reliability. It avoids complex configurations and focuses on treating logs as actionable data with features like global context and exception logging.
Simple logging
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Outputs logs in consistent key=value pairs, making them machine-readable and easy to parse with tools like logstash, as demonstrated in the README's example logs.
Allows setting application-wide context such as app name and deployment environment via Scrolls.init, ensuring all logs include essential metadata without repetition.
Provides a dedicated log_exception method to capture and log exceptions with details like class and site, simplifying error tracking in production.
Maintains support for older API versions (pre-0.9.0), enabling smooth upgrades without breaking existing logging code, as noted in the README.
Lacks built-in support for standard log levels (e.g., DEBUG, INFO), forcing developers to implement custom fields for severity, which can complicate log filtering.
Logs are written synchronously by default, with no async option mentioned, potentially impacting performance in high-volume applications without external queuing.
Only supports key=value (logfmt) format; it cannot output JSON natively, which may require additional processing for teams using JSON-based log pipelines.