From 09d470046abbb6f399ee3b239ec1a89f4d96b8bd Mon Sep 17 00:00:00 2001 From: GroovieGermanikus Date: Tue, 7 May 2024 10:14:47 +0200 Subject: [PATCH] parse logs --- examples/parse_timestamp_tagged_logs.rs | 66 +++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 examples/parse_timestamp_tagged_logs.rs diff --git a/examples/parse_timestamp_tagged_logs.rs b/examples/parse_timestamp_tagged_logs.rs new file mode 100644 index 0000000..ca11dcd --- /dev/null +++ b/examples/parse_timestamp_tagged_logs.rs @@ -0,0 +1,66 @@ +use std::collections::HashMap; +use std::fs::File; +use std::io; +use std::io::BufRead; +use std::path::{Path, PathBuf}; +use regex::Regex; + +pub fn parse_log_entry_subscriber(log_entry: &str) -> HashMap { + let re = Regex::new(r".*got account update: write_version=(?P\d+);timestamp_us=(?P\d+);slot=(?P\d+)").unwrap(); + let caps = re.captures(log_entry).unwrap(); + + let mut result = HashMap::new(); + result.insert("write_version".to_string(), caps["write_version"].to_string()); + result.insert("timestamp_us".to_string(), caps["timestamp_us"].to_string()); + result.insert("slot".to_string(), caps["slot"].to_string()); + + result +} + +pub fn parse_log_entry_source(log_entry: &str) -> HashMap { + let re = Regex::new(r".*account update: write_version=(?P\d+);timestamp_us=(?P\d+);slot=(?P\d+)").unwrap(); + let caps = re.captures(log_entry).unwrap(); + + let mut result = HashMap::new(); + result.insert("write_version".to_string(), caps["write_version"].to_string()); + result.insert("timestamp_us".to_string(), caps["timestamp_us"].to_string()); + result.insert("slot".to_string(), caps["slot"].to_string()); + + result +} + + + +fn read_subscriber_log(log_file: PathBuf) { + + let file = File::open(log_file).expect("file must exist"); + let reader = io::BufReader::new(file); + for line in reader.lines().take(10) { + let line = line.expect("must be parsable"); + let parsed = parse_log_entry_subscriber(&line); + println!("{:?}", parsed); + } + +} + +fn read_source_log(log_file: PathBuf) { + let file = File::open(log_file).expect("file must exist"); + let reader = io::BufReader::new(file); + for line in reader.lines().take(10) { + let line = line.expect("must be parsable"); + let parsed = parse_log_entry_source(&line); + println!("{:?}", parsed); + } +} + + +pub fn main() { + + + read_subscriber_log(PathBuf::from("/Users/stefan/mango/projects/geyser-misc/accounts-stream-performance/macbook.log")); + + read_source_log(PathBuf::from("/Users/stefan/mango/projects/geyser-misc/accounts-stream-performance/solana-validator-macbook.log")); + + + +}