logv is a fast, offline-first CLI/TUI log viewer for Linux terminals.
It is built for the common workflow of:
- opening huge log files quickly
- spotting errors without writing ad-hoc
grepchains - switching between plain text and JSON logs without changing tools
- following live logs with useful context instead of raw
tail -f
Think of it as a lightweight blend of less, jq, grep, and tail -f, with a simpler entrypoint:
logv app.loglogs from simple ping command
Most terminal log workflows are powerful but fragmented. You end up bouncing between:
lessfor navigationgrepor regex for filteringjqfor JSON logstail -ffor live streams- custom shell aliases for colors and quick views
logv pulls the common cases into one tool:
- one command to open a log file
- automatic JSON/plain-text detection
- level-aware coloring
- fast search and filtering
- grouped repeated messages
- stack trace blocks
- timeline summaries
- bounded-memory live mode
- zero-config entrypoint:
logv app.log - interactive TUI powered by Textual
- plain streaming mode for scripts and pipes
- bounded memory usage in interactive mode for large files
- level detection for
ERROR,WARN,INFO,DEBUG - automatic JSON and plain-text parsing
- timestamp detection
- stack trace grouping into a single logical event
- repeated-message grouping by normalized fingerprints
- HTTP status highlighting for
4xxand5xx - IP address highlighting
- URL highlighting
- timestamp highlighting
- stack trace line highlighting
- level filters via
--leveland interactive filters - regex filters via
--regex - free-text search
- quick interactive filters such as
/errorand/warn
logv -f app.log- follows appended data like
tail -f - keeps the interface responsive
- detects bursts of
ERRORevents
- per-bucket error timeline
- spike detection for error bursts
- compact terminal-friendly sparkline summary
Clone the repository and let install.sh choose the installation strategy automatically:
git clone https://github.com/Ribengame/logv && cd logv && sudo ./install.shInstallation behavior:
- Arch-like systems with
yay: install the AUR packagelogv - Debian-like systems: build and install a local
.deb - other Linux distributions: install a portable build into
/opt/logv - wrapper command exposed as
/usr/bin/logv
logv is available on AUR as logv.
yay -S logvparu -S logv
AUR package:
If you have a built package:
sudo apt install ./logv_0.1.0_all.debOr install with dpkg:
sudo dpkg -i ./logv_0.1.0_all.debTo build the Debian package locally:
./packaging/build_deb.shpython3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
pip install .sudo ./install.shOpen a file in TUI mode:
logv app.logFollow a live log:
logv -f app.logFilter by level:
logv app.log --level errorUse regex filtering:
logv app.log --regex "timeout|refused|5.."Export matched events:
logv app.log --plain --level error --export filtered-errors.logSave a session summary:
logv app.log --plain --save-session session.jsonStructured JSON logs:
logv app.jsonPlain mode for shell workflows:
logv app.log --plainGrouping repeated messages:
logv app.log --groupCombining filters:
logv app.log --level error --regex "postgres|timeout"Up/Down: navigate rows/: search within the current bufferf: open filter promptg: toggle groupingt: toggle timeline panelr: reload file?: show helpq: quit
Examples:
/error/warnlevel:error,warnregex:timeout|refusedgateway timeoutre:5[0-9]{2}
logv/
├── logv/
│ ├── main.py
│ ├── parser.py
│ ├── highlighter.py
│ ├── filters.py
│ ├── timeline.py
│ ├── tui.py
│ ├── live.py
│ └── utils.py
├── samples/
├── tests/
├── packaging/
├── PKGBUILD
├── pyproject.toml
└── requirements.txt
Run tests:
python3 -m unittest discover -s tests -vRun the sample log:
logv samples/app.log- TUI loads the full file for smaller logs and falls back to bounded history for larger inputs.
- Plain mode keeps memory usage low by streaming events instead of loading the whole file into memory.
- The Debian package bundles its Python runtime environment under
/opt/logvand exposes/usr/bin/logv. logvworks fully offline at runtime.
MIT. See LICENSE.
