sleepycat
takes in data from stdin
and outputs on stdout
at a given number of lines per second (LPS).
I was writing a program to parse a log file and draw graphs in real-time. I needed a way to repeatedly test it without generating log files from the source application.
You have several ways to get sleepycat
:
cargo install sleepycat
git clone https://github.com/daniellockyer/sleepycat
cargo build --release
target/release/sleepycat
Right now, this project is just an attempt to get something running. It doesn't take into account the time it takes to print a line, so it sleep
s for too long and the actual LPS ends up being lower than the target. It's not so much of a big deal with smaller targets, but it struggles to reach higher numbers.
You can test the accuracy using the following command:
cargo run --release < access.log | pv --line-mode --rate > /dev/null