hyperi-rustlib 2.8.6

There's plenty of sage advice out there about how to run Rust services in production at scale — config cascades, structured logging, masking secrets, multi-backend secrets management, Prometheus, OpenTelemetry, Kafka transports, tiered disk-spillover sinks, adaptive worker pools, graceful shutdown — but almost none of it as code you can just install and use. This is that code. Opinionated, drop-in, working out of the box. The patterns from blog posts, watercooler chats and beers with your Google mates as actual library — not a framework you assemble from twenty crates and 8 weeks of munging.
Documentation
// Project:   hyperi-rustlib
// File:      src/output/mod.rs
// Purpose:   File output sink module
// Language:  Rust
//
// License:   BUSL-1.1
// Copyright: (c) 2026 HYPERI PTY LIMITED

//! File output sink for local NDJSON event writing.
//!
//! Provides a simple file-based output for DFE services -- useful for testing,
//! bare-metal deployments, and debugging where Kafka is not available.
//!
//! ## Example
//!
//! ```rust,no_run
//! use hyperi_rustlib::output::{FileOutput, FileOutputConfig};
//!
//! let config = FileOutputConfig {
//!     enabled: true,
//!     path: "/tmp/dfe/output".into(),
//!     ..Default::default()
//! };
//!
//! let output = FileOutput::new(&config, "my-service").expect("create output");
//! output.write(b"{\"event\":\"login\"}").expect("write");
//! ```

mod config;
mod error;
mod file;

pub use config::FileOutputConfig;
pub use error::OutputError;
pub use file::FileOutput;