Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/reagentx/logria
A powerful CLI tool that puts log aggregation at your fingertips.
https://github.com/reagentx/logria
log-analysis log-monitor log-parser log-viewer logging rust
Last synced: about 2 months ago
JSON representation
A powerful CLI tool that puts log aggregation at your fingertips.
- Host: GitHub
- URL: https://github.com/reagentx/logria
- Owner: ReagentX
- License: gpl-3.0
- Created: 2020-11-10T04:22:09.000Z (about 4 years ago)
- Default Branch: develop
- Last Pushed: 2024-03-07T19:57:53.000Z (10 months ago)
- Last Synced: 2024-10-16T09:17:44.003Z (2 months ago)
- Topics: log-analysis, log-monitor, log-parser, log-viewer, logging, rust
- Language: Rust
- Homepage:
- Size: 4.46 MB
- Stars: 51
- Watchers: 3
- Forks: 1
- Open Issues: 10
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
![Logria Logo](/resources/branding/logria.svg)
# 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](https://crates.io/crates/logria).
`cargo install logria` is the best way to install the app for normal use.
### Development
See [Advanced Installation](docs/README.md#advanced-installation).
## 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 optionsFor more details, see [Sample Usage Session](docs/README.md#sample-usage-session).
## Key Commands
| Key | Command |
|--|--|
| `:` | [command mode](docs/commands.md) |
| `/` | 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
![logria](/resources/screenshots/logria.png)
### Interactive, live, editable regex search
![regex](/resources/screenshots/regex.png)
### Live log message parsing
![parser](/resources/screenshots/parser.png)
### Live aggregation/statistics tracking
![aggregation](/resources/screenshots/aggregation.png)
### User-defined saved sessions
See [session](/docs/sessions.md) docs.
### User-defined saved log parsing methods
See [parser](/docs/parsers.md) docs.
## Notes
This is a Rust implementation of my [Python](https://github.com/ReagentX/Logria-py) 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`](https://github.com/jorgebastida/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`](https://lnav.org/features) or [`angle-grinder`](https://github.com/rcoh/angle-grinder/) will both do the job better.
## Special Thanks
- [Voidsphere](https://voidsphere.bandcamp.com/music), for providing all the hacking music I could want.
- [Julian Coleman](https://github.com/juliancoleman/), for lots of code review and general Rust advice.
- [@rhamorim](https://twitter.com/rhamorim), for [suggesting](https://twitter.com/rhamorim/status/1333856615624306692) an alternative for non-blocking IO without `O_NONBLOCK`.
- [@javasux0](https://twitter.com/javasux0), for [suggesting](https://twitter.com/javasux0/status/1333866079555239936) an alternative for non-blocking IO without `O_NONBLOCK`.
- [yonkeltron](https://github.com/yonkeltron), for advice and help learning Rust.
- [Simone Vittori](https://www.simonewebdesign.it), for a great [blog post](https://www.simonewebdesign.it/rust-hashmap-insert-values-multiple-types/) on storing multiple value types in a `HashMap`.