This is the second in a new series highlighting best-of-breed utilities. We’ll be covering a wide range of utilities including tools that boost your productivity, help you manage your workflow, and lots more besides. For this article, we’ll put lnav under the spotlight.
lnav is a curses-based utility for viewing and analyzing log files. The software is designed to extract useful information from log files, making it easy to perform advanced queries. Think of lnav as an enhanced log file viewer.
For many years system and kernel logs were handled by a utility called syslogd. Most Linux-based operating systems have since moved to systemd, which has a journal. That’s a giant log file for the whole system. Various software and services write their log entries into systemd’s journalctl. lnav can consume the JSON version of journalctl’s output. And it supports a wide range of other log formats. For systems running systemd-journald, you can also use lnav as the pager.
We included a couple of log analyzers in our Essential System Tools feature. And lnav wouldn’t be totally out of place in that feature. lnav is optimized for small-scale deployments.
The developers provide a generic 64-bit statically linked binary, as well as statically linked 64-bit binaries for RPM and DEB package formats. There’s also a snap available.
As the full source code is available, you can compile and install the software yourself.
$ git clone https://github.com/tstack/lnav.git
$ cd lnav
$ make -j4
$ sudo make install
The configure command didn’t initially work, as our Ubuntu system was bizarrely missing libsqlite3-dev. Installing that package with the command fixed the issue.
$ sudo apt install libsqlite3-dev
One word about the make command, the -j flag tells make that it’s instructed to spawn the provided amount of ‘threads’. Ideally each thread is executed on its own core/CPU, so your multi-core/CPU machine is used to its maximum. This speeds up compilation.
There’s no setup or configuration for lnav, and it automatically detects most log formats, so you only need to point this tool at the logfile you want to investigate.
Complete list of articles in this series:
|tmux||A terminal multiplexer that offers a massive boost to your workflow|
|lnav||Advanced log file viewer for the small-scale; great for troubleshooting|
|Paperwork||Designed to simplify the management of your paperwork|
|Abricotine||Markdown editor with inline preview functionality|
|mdless||Formatted and highlighted view of Markdown files|
|fkill||Kill processes quick and easy|
|Tusk||An unofficial Evernote client with bags of potential|
|Ulauncher||Sublime application launcher|
|McFly||Navigate through your bash shell history|
|LanguageTool||Style and grammar checker for 30+ languages|
|peco||Simple interactive filtering tool that's remarkably useful|
|Liquid Prompt||Adaptive prompt for Bash & Zsh|
|Ananicy||Shell daemon created to manage processes’ IO and CPU priorities|
|cheat.sh||Community driven unified cheat sheet|
|ripgrep||Recursively search directories for a regex pattern|
|exa||A turbo-charged alternative to the venerable ls command|
|OCRmyPDF||Add OCR text layer to scanned PDFs|
|Watson||Track the time spent on projects|
|fontpreview||Quickly search and preview fonts|
|fd||Wonderful alternative to the venerable find|
|scrcpy||Display and control Android devices|
|duf||Disk usage utility with more polished presentation than the classic df|
|tldr||Simplified and community-driven man pages|