⚡ losan (LOg SANitizer)
A blazing-fast, multi-threaded log sanitizer built in Rust. Redact sensitive data (emails, API keys, IP addresses, JWTs, and UUIDs) at 800+ MB/s.
🚀 Key Features
- Extreme Throughput: Processes gigabytes of log data at sub-second speeds using Rayon parallel processing and SIMD-accelerated
memchrbyte scanning. - O(1) Pre-Filtering: Employs a single-pass
RegexSetmatcher to bypass regex evaluation on clean log entries entirely. - Zero-Panic Security: Strict ASCII-safe boundary evaluation to sanitize logs safely without heap thrashing.
- Flexible Target Resolution: Sanitizes single
.logfiles or recursively processes entire directory trees. - Rich Visual Feedback: Terminal progress indicators powered by
indicatifand styledtabledexecution summaries.
📊 Benchmarks
Evaluated on an 8-core CPU processing 1.2 GB (64 files / ~16,000,000 log lines) containing a standard mix of safe system entries and masked credentials.
| Tool / Implementation | Processing Time | Throughput (MB/s) | Memory Usage (Peak) |
|---|---|---|---|
losan (Rust - Release) |
3.28 s | 389.4 MB/s | ~24 MB |
python3 (Parallel multiprocessing script) |
48.12 s | 26.5 MB/s | ~185 MB |
sed (Sequential regex pipeline) |
142.05 s | 9.0 MB/s | ~12 MB |
Note: Benchmark execution performed with 512 KB I/O ring buffers.
📦 Installation
Via Cargo (crates.io)
cargo install losan
From Source
git clone https://github.com/samutrova/losan.git cd losan cargo build --release
The compiled binary will be located in ./target/release/losan.
💻 Usage Examples
1. Sanitize an Entire Directory of Log Files
losan clean --input ./var/logs --output-dir ./sanitized_logs
2. Sanitize a Single Log File
losan clean -i ./server.log -o ./sanitized_output
🔒 Masked Patterns
losan automatically redacts the following sensitive entities out of the box:
- API Keys & Secrets:
api_key=*****,access_key=***** - Bearer Tokens & JWTs:
Bearer *****,eyJ... - Email Addresses:
m.***@domain.com - IP Addresses (v4 & v6):
192.168.x.x - UUIDs / User Identifiers:
7e3b9a10-****-****
📄 License
Dual-licensed under either of:
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
💖 Sponsors
A huge thank you to everyone supporting the ongoing development of losan!