Skip to main content

Crate rune_axum_audit

Crate rune_axum_audit 

Source
Expand description

Structured audit log middleware for Axum — records every request/response cycle.

A Tower Layer that captures method, path, query string, client IP, user-agent, HTTP status code, and wall-clock latency for every request, then delivers the data to a configurable sink. The inner service and its response are returned unchanged; auditing is purely observational.

§Features

  • AuditEvent — a plain struct capturing one request/response cycle.
  • AuditSink trait — implement any destination: file, channel, database, SIEM.
  • StdoutSink / StderrSink — print structured lines to standard streams.
  • NullSink — discard all events; useful for tests and benchmarks.
  • CallbackSink — drive any closure; useful for custom aggregation.
  • AuditLayer — Tower layer; apply with .layer() on any Axum [Router].

§Quick Start

use axum::{routing::get, Router};
use rune_axum_audit::AuditLayer;

let app: Router = Router::new()
    .route("/api", get(|| async { "ok" }))
    .layer(AuditLayer::stdout());

§Custom sink

use std::sync::{Arc, Mutex};
use axum::{routing::get, Router};
use rune_axum_audit::{AuditEvent, AuditLayer, CallbackSink};

let events: Arc<Mutex<Vec<AuditEvent>>> = Arc::new(Mutex::new(Vec::new()));
let captured = Arc::clone(&events);

let app: Router = Router::new()
    .route("/api", get(|| async { "ok" }))
    .layer(AuditLayer::new(CallbackSink::new(move |event| {
        captured.lock().unwrap().push(event);
    })));

Structs§

AuditEvent
A single captured request/response audit record.
AuditFuture
Future returned by AuditService.
AuditLayer
Tower Layer that records one AuditEvent per request to the configured AuditSink.
AuditService
Tower Service produced by AuditLayer.
CallbackSink
AuditSink backed by a closure.
NullSink
AuditSink that silently discards every AuditEvent.
StderrSink
AuditSink that prints each AuditEvent to standard error.
StdoutSink
AuditSink that prints each AuditEvent to standard output.

Traits§

AuditSink
The delivery interface for AuditEvent records.