| Crates.io | cleverlib |
| lib.rs | cleverlib |
| version | 0.2.0 |
| created_at | 2024-11-25 18:25:20.781034+00 |
| updated_at | 2025-07-11 19:15:49.916599+00 |
| description | cleverlib makes it easy to parse compact log events (clef) |
| homepage | |
| repository | https://github.com/hackinghieser/clever |
| max_upload_size | |
| id | 1460585 |
| size | 62,956 |
A flexible Rust library for processing and analyzing log events with parallel and serial processing strategies.
use cleverlib::event_collection::EventCollection;
use std::fs::File;
use std::io::{BufRead, BufReader};
fn main() {
// Read log file lines
let file: File = File::open("events.log").expect("Failed to open log file");
let lines: Vec<String> = BufReader::new(file)
.lines()
.collect::<Result<Vec<String>, std::io::Error>>()
.expect("Failed to read lines");
// Create event collection
let event_collection: EventCollection = EventCollection::create(&lines).unwrap();
// Print detected log levels
println!("Log Levels: {:?}", event_collection.log_levels);
// Filter events by log level
let error_events: Vec<&Event> = event_collection.filter_log_level("error");
println!("Error Events: {}", error_events.len());
}
use cleverlib::event_collection::EventCollection;
use std::fs::File;
use std::io::{BufRead, BufReader};
fn main() {
let file: File = File::open("large_events.log").expect("Failed to open log file");
let lines: Vec<String> = BufReader::new(file)
.lines()
.collect::<Result<Vec<String>, std::io::Error>>()
.expect("Failed to read lines");
// Use parallel processing for large log files
let event_collection: EventCollection = EventCollection::create_par(&lines).unwrap();
println!("Total Events: {}", event_collection.events.len());
println!("Unique Log Levels: {:?}", event_collection.log_levels);
}
create() - Best for smaller log filescreate_par() - Recommended for large log filescreate(&lines): Process events seriallycreate_par(&lines): Process events in parallelfilter_log_level(level): Filter events by log levelfilter_log_level_par(level): Parallel log level filteringThe library automatically detects unique log levels during event processing. Detected levels are stored in event_collection.log_levels.
Contributions welcome! Please submit pull requests or open issues on the project repository.