ratatouille 0.1.0

Best-effort telemetry firehose logger with bounded topic state
Documentation
  • Coverage
  • 95.37%
    103 out of 108 items documented1 out of 51 items with examples
  • Size
  • Source code size: 47.38 kB This is the summed size of all the files inside the crates.io package for this release.
  • Documentation size: 7.93 MB This is the summed size of all files generated by rustdoc for all configured targets
  • Ø build duration
  • this release: 22s Average build duration of successful builds.
  • all releases: 22s Average build duration of successful builds in releases after 2024-10-23.
  • Links
  • Homepage
  • frogfishio/ratatouille
    0 0 0
  • crates.io
  • Dependencies
  • Versions
  • Owners
  • eldiablolives

ratatouille

A zero-dependency Rust crate for best-effort telemetry firehose logging with topic filters, per-topic sequence counters, text or NDJSON formatting, and std-only HTTP/TCP sinks and relays.

Features

  • DEBUG-style allow/deny topic filters with * wildcards
  • per-topic monotonic local sequence counters
  • text and NDJSON output modes
  • stdout sink, callback sink, and custom sink trait support
  • plain http:// sink plus bounded explicit-flush HTTP relay
  • plain tcp://host:port sink plus bounded explicit-flush TCP relay
  • zero external dependencies beyond Rust std

Quick start

use ratatouille::{Format, Logger, LoggerConfig, SourceIdentity};

fn main() {
    let mut config = LoggerConfig::default();
    config.filter = Some("api*,-api:noise".into());
    config.format = Format::Ndjson;
    config.source = SourceIdentity {
        app: Some("example".into()),
        r#where: Some("rust".into()),
        instance: Some("local".into()),
    };

    let mut logger = Logger::new(config);
    let _ = logger.log("api", "hello from Rust");
}

Transports

HttpSink and HttpRelay are intentionally minimal:

  • http:// only
  • no TLS
  • no background thread
  • bounded in-memory relay queue
  • explicit flush_now() for relay batch delivery

TcpSink and TcpRelay are similarly minimal:

  • tcp://host:port only
  • no background thread
  • bounded in-memory relay queue
  • explicit flush_now() for relay batch delivery

Notes

  • Logging is best-effort telemetry, not an audit trail.
  • LoggerConfig::default() does not emit anything until a filter is configured.
  • The shared behavioral contract lives in contract/cases.tsv in the repository root.