logdrain 0.3.2

Online Drain log-template mining with path-preserving tokenization, masks, and persistence
Documentation
[package]
name = "logdrain"
version = "0.3.2"
description = "Online Drain log-template mining with path-preserving tokenization, masks, and persistence"
readme = "README.md"
keywords = ["logs", "observability", "drain", "log-parsing", "log-mining"]
categories = ["parsing", "algorithms", "text-processing"]
edition.workspace = true
rust-version.workspace = true
license.workspace = true
repository.workspace = true
authors.workspace = true

[dependencies]
regex.workspace = true
rustc-hash.workspace = true
dashmap.workspace = true
smallvec.workspace = true
serde.workspace = true
bincode.workspace = true
thiserror.workspace = true

# Optional persistence backends, off by default to keep the core dependency-light.
redis = { version = "0.27", optional = true, default-features = false }
rdkafka = { version = "0.36", optional = true, features = ["cmake-build"] }

[features]
# Redis snapshot backend (`RedisPersistence`). Pure-Rust, no system deps.
redis = ["dep:redis"]
# Kafka snapshot backend (`KafkaPersistence`) via a compacted topic. Pulls
# rdkafka, which vendors and builds librdkafka (needs a C toolchain + cmake).
kafka = ["dep:rdkafka"]

[dev-dependencies]
proptest = "1"
criterion = "0.5"
# Functional backend tests spin up real Redis/Kafka via Docker (testcontainers).
testcontainers = { version = "0.23", features = ["blocking"] }
testcontainers-modules = { version = "0.11", features = ["redis", "kafka"] }

[[bench]]
name = "add"
harness = false

# Examples are auto-discovered from `examples/`.