Awesome
Logria
A powerful CLI tool that puts log aggregation at your fingertips.
tl;dr
- 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
Installation
There are several options to install this app.
Cargo (recommended)
This binary is available on crates.io.
cargo install logria
is the best way to install the app for normal use.
Development
Usage
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 Commands
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 |
Features
Here are some of the ways you can leverage Logria:
Live stream of log data
Interactive, live, editable regex search
Live log message parsing
Live aggregation/statistics tracking
User-defined saved sessions
See session docs.
User-defined saved log parsing methods
See parser docs.
Notes
This is a Rust implementation of my Python proof-of-concept.
When to use Logria
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.
When to avoid Logria
Logria is not a tool for detailed log analytics. lnav
or angle-grinder
will both do the job better.
Special Thanks
- 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
.