A powerful CLI tool that puts log aggregation at your fingertips.
- Live filtering/parsing of data from other processes
- Use shell commands or files as input, save sessions and come back later
- Replace regex/filter without killing the process or losing the stream's history
- Parse logs using user-defined rules, apply aggregation methods on top
There are several options to install this app.
This binary is available on crates.io.
cargo install logria
is the best way to install the app for normal use.
There are a few ways to invoke Logria:
- Directly:
logria
- Opens to the setup screen
- With args:
logria -e 'tail -f log.txt'
- Opens a process for
tail -f log.txt
and skips setup logria -h
will show the help page with all possible options
For more details, see Sample Usage Session.
Key | Command |
---|---|
: |
command mode |
/ |
regex search |
h |
if regex active, toggle highlighting of matches |
s |
swap reading stderr and stdout |
p |
activate parser |
a |
toggle aggregation mode when parser is active |
z |
deactivate parser |
↑ | scroll buffer up one line |
↓ | scroll buffer down one line |
→ | skip and stick to end of buffer |
← | skip and stick to beginning of buffer |
Here are some of the ways you can leverage Logria:
See session docs.
See parser docs.
This is a Rust implementation of my Python proof-of-concept.
Logria is best leveraged to watch live logs from multiple processes and filter them for events you want to see. My most common use case is watching logs from multiple Linode/EC2 instances via ssh
or multiple CloudWatch streams using awslogs
.
I also use it to analyze the logs from my Apache web servers that print logs in the common log format.
Logria is not a tool for detailed log analytics. lnav
or angle-grinder
will both do the job better.
- Voidsphere, for providing all the hacking music I could want.
- Julian Coleman, for lots of code review and general Rust advice.
- @rhamorim, for suggesting an alternative for non-blocking IO without
O_NONBLOCK
. - @javasux0, for suggesting an alternative for non-blocking IO without
O_NONBLOCK
. - yonkeltron, for advice and help learning Rust.
- Simone Vittori, for a great blog post on storing multiple value types in a
HashMap
.