#read #logger #wrap #statistics #level #file #count

read-logger

Wrap Read with a read statistics logger

2 unstable releases

0.2.0 Sep 2, 2023
0.1.0 Sep 2, 2023

#38 in #wrap

Download history 116/week @ 2024-11-16 140/week @ 2024-11-23 219/week @ 2024-11-30 431/week @ 2024-12-07 372/week @ 2024-12-14 46/week @ 2024-12-21 48/week @ 2024-12-28 253/week @ 2025-01-04 344/week @ 2025-01-11 296/week @ 2025-01-18 407/week @ 2025-01-25 184/week @ 2025-02-01 404/week @ 2025-02-08 492/week @ 2025-02-15 355/week @ 2025-02-22 158/week @ 2025-03-01

1,445 downloads per month
Used in 5 crates (via http-range-client)

MIT/Apache

9KB
142 lines

read-logger

CI build crates.io version docs.rs docs

Wrap Read with a read statistics logger. Implements Read+Seek.

Usage example

use std::fs::File;
use std::io::{BufReader, Read};
use read_logger::{Level, ReadLogger};

let f = File::open("Cargo.toml").unwrap();
let mut read_logger = ReadLogger::new(f, Level::Debug, "READ");
let mut reader = BufReader::new(&mut read_logger);

let mut bytes = [0; 4];
reader.read_exact(&mut bytes).unwrap();
reader.read_exact(&mut bytes).unwrap();

// BufReader does only one read() call:
assert_eq!(read_logger.stats().read_count, 1);
assert!(read_logger.stats().bytes_total > 200);

Run with (using env_logger):

RUST_LOG=read_logger=debug cargo run

Log output:

[2023-09-02T18:41:41Z DEBUG read_logger] Initialize Read logger `READ`,tag,begin,end,length,request_length,count,bytes_total
[2023-09-02T18:41:41Z DEBUG read_logger] Read 0-236 (237 bytes). Total requests: 1 (237 bytes),READ,0,236,237,8192,1,237

Dependencies

~86KB