2022-08-29 01:55:32 +00:00
|
|
|
|
[1mScreenshot[0m
|
|
|
|
|
|
2024-02-19 14:52:41 +00:00
|
|
|
|
The following screenshot shows a mix of syslog and web access log
|
|
|
|
|
files. Failed requests are shown in red. Identifiers, like IP
|
|
|
|
|
address and PIDs are semantically highlighted.
|
2022-08-29 01:55:32 +00:00
|
|
|
|
|
2024-05-22 05:21:46 +00:00
|
|
|
|
]8;;file://{top_srcdir}/docs/assets/images/lnav-front-page.png\[4m🖼 Screenshot[0m]8;;\]8;;file://{top_srcdir}/docs/assets/images/lnav-front-page.png\[4m¹[0m]8;;\˒²
|
2022-08-29 01:55:32 +00:00
|
|
|
|
|
2024-05-17 04:07:35 +00:00
|
|
|
|
[34m▌[0m[1] - file://{top_srcdir}/docs/assets/images/lnav-front-page.png
|
|
|
|
|
[34m▌[0m[2] - file://{top_srcdir}/docs/assets/images/lnav-front-page.png
|
2022-08-29 01:55:32 +00:00
|
|
|
|
|
2024-02-19 14:39:32 +00:00
|
|
|
|
[1mWhy not [0m[1mjust[0m[1m use [0m[1m[37m[40m tail [0m[1m/[0m[1m[37m[40m grep [0m[1m/[0m[1m[37m[40m less [0m[1m?[0m
|
|
|
|
|
|
|
|
|
|
The standard Unix utilities are great for processing raw text lines,
|
|
|
|
|
however, they do not understand log messages. Tail can watch multiple
|
|
|
|
|
files at a time, but it won't display messages in order by time and
|
|
|
|
|
you can't scroll backwards. Grep will only find matching lines, but
|
|
|
|
|
won't return a full multi-line log message. Less can only display a
|
|
|
|
|
single file at a time. Also, none of these basic tools handle
|
|
|
|
|
compressed files.
|
|
|
|
|
|
2024-02-19 14:52:41 +00:00
|
|
|
|
[1mTry online before installing[0m
|
|
|
|
|
|
|
|
|
|
You can SSH into a demo node to play with lnav before installing.
|
|
|
|
|
|
|
|
|
|
The [35m"playground"[0m account starts lnav with a couple of log files as an
|
|
|
|
|
example:
|
|
|
|
|
|
2024-05-18 13:52:18 +00:00
|
|
|
|
]8;;ssh://playground@demo.lnav.org\[4m[37m[40m $ ssh playground@demo.lnav.org [0m]8;;\¹
|
2024-02-19 14:52:41 +00:00
|
|
|
|
|
2024-05-17 04:07:35 +00:00
|
|
|
|
[34m▌[0m[1] - ssh://playground@demo.lnav.org
|
2024-02-19 14:52:41 +00:00
|
|
|
|
|
|
|
|
|
The [35m"tutorial 1"[0m account is an interactive tutorial that can teach you
|
|
|
|
|
the basics of operation:
|
|
|
|
|
|
2024-05-18 13:52:18 +00:00
|
|
|
|
]8;;ssh://tutorial1@demo.lnav.org\[4m[37m[40m $ ssh tutorial1@demo.lnav.org [0m]8;;\¹
|
2024-02-19 14:52:41 +00:00
|
|
|
|
|
2024-05-17 04:07:35 +00:00
|
|
|
|
[34m▌[0m[1] - ssh://tutorial1@demo.lnav.org
|
2024-02-19 14:52:41 +00:00
|
|
|
|
|
2022-08-29 01:55:32 +00:00
|
|
|
|
[1mInstallation[0m
|
|
|
|
|
|
2023-08-25 04:10:54 +00:00
|
|
|
|
]8;;https://github.com/tstack/lnav/releases/latest#release-artifacts\[4mDownload a statically-linked binary for Linux/MacOS from the release[0m]8;;\
|
2024-05-18 13:52:18 +00:00
|
|
|
|
]8;;https://github.com/tstack/lnav/releases/latest#release-artifacts\[4mpage[0m]8;;\¹
|
2022-08-29 01:55:32 +00:00
|
|
|
|
|
2024-05-17 04:07:35 +00:00
|
|
|
|
[34m▌[0m[1] - https://github.com/tstack/lnav/releases/latest#release-artifacts
|
2022-08-29 01:55:32 +00:00
|
|
|
|
|
2024-02-19 14:39:32 +00:00
|
|
|
|
[4mBrew on MacOS[0m
|
|
|
|
|
|
|
|
|
|
▌[33m[40m$ [0m[37m[40mbrew install lnav [0m
|
|
|
|
|
|
2022-08-29 01:55:32 +00:00
|
|
|
|
[1mUsage[0m
|
|
|
|
|
|
2024-02-19 06:35:36 +00:00
|
|
|
|
Simply point [1mlnav[0m at the files or directories you want to monitor, it
|
|
|
|
|
will figure out the rest:
|
2022-08-29 01:55:32 +00:00
|
|
|
|
|
2024-02-19 14:39:32 +00:00
|
|
|
|
▌[33m[40m$ [0m[37m[40mlnav /path/to/file1 /path/to/dir ... [0m
|
2022-08-29 01:55:32 +00:00
|
|
|
|
|
2024-02-19 06:35:36 +00:00
|
|
|
|
The [1mlnav[0m TUI will pop up right away and begin indexing the files.
|
|
|
|
|
Progress is displayed in the [35m"Files"[0m panel at the bottom. Once the
|
|
|
|
|
indexing has finished, the LOG view will display the log messages that
|
2024-02-19 14:54:40 +00:00
|
|
|
|
were recognized[^1]. You can then use the usual hotkeys to move around
|
2024-02-19 06:35:36 +00:00
|
|
|
|
the view (arrow keys or [37m[40m j [0m/[37m[40m k [0m/[37m[40m h [0m/[37m[40m l [0m to move down/up/left/right).
|
2022-08-29 01:55:32 +00:00
|
|
|
|
|
2024-05-18 13:52:18 +00:00
|
|
|
|
See the ]8;;https://docs.lnav.org/en/latest/usage.html\[4mUsage section[0m]8;;\¹ of the online documentation for more
|
2024-02-19 14:39:32 +00:00
|
|
|
|
information.
|
|
|
|
|
|
2024-05-17 04:07:35 +00:00
|
|
|
|
[34m▌[0m[1] - https://docs.lnav.org/en/latest/usage.html
|
2024-02-19 14:39:32 +00:00
|
|
|
|
|
2024-02-19 14:56:15 +00:00
|
|
|
|
[^1]: Files that do not contain log messages can be seen in the TEXT
|
2024-02-19 06:35:36 +00:00
|
|
|
|
view (reachable by pressing [37m[40m t [0m).
|
2022-08-29 01:55:32 +00:00
|
|
|
|
|
2023-08-31 05:46:07 +00:00
|
|
|
|
[4mUsage with [0m[4m[37m[40m systemd-journald [0m
|
2022-08-29 01:55:32 +00:00
|
|
|
|
|
2023-08-31 05:46:07 +00:00
|
|
|
|
On systems running [37m[40m systemd-journald [0m, you can use [37m[40m lnav [0m as the
|
2022-08-29 01:55:32 +00:00
|
|
|
|
pager:
|
|
|
|
|
|
|
|
|
|
▌[37m[40m$ journalctl | lnav [0m
|
|
|
|
|
|
|
|
|
|
or in follow mode:
|
|
|
|
|
|
|
|
|
|
▌[37m[40m$ journalctl -f | lnav [0m
|
|
|
|
|
|
2023-08-31 05:46:07 +00:00
|
|
|
|
Since [37m[40m journalctl [0m's default output format omits the year, if you are
|
2022-08-29 01:55:32 +00:00
|
|
|
|
viewing logs which span multiple years you will need to change the
|
2023-08-31 05:46:07 +00:00
|
|
|
|
output format to include the year, otherwise [37m[40m lnav [0m gets confused:
|
2022-08-29 01:55:32 +00:00
|
|
|
|
|
|
|
|
|
▌[37m[40m$ journalctl -o short-iso | lnav [0m
|
|
|
|
|
|
2023-08-31 05:46:07 +00:00
|
|
|
|
It is also possible to use [37m[40m journalctl [0m's json output format and
|
|
|
|
|
[37m[40m lnav [0mwill make use of additional fields such as PRIORITY and
|
|
|
|
|
_SYSTEMD_UNIT:
|
2022-08-29 01:55:32 +00:00
|
|
|
|
|
|
|
|
|
▌[37m[40m$ journalctl -o json | lnav [0m
|
|
|
|
|
|
|
|
|
|
In case some MESSAGE fields contain special characters such as ANSI
|
|
|
|
|
color codes which are considered as unprintable by journalctl,
|
2023-08-31 05:46:07 +00:00
|
|
|
|
specifying [37m[40m journalctl [0m's [37m[40m -a [0m option might be preferable in order to
|
2022-08-29 01:55:32 +00:00
|
|
|
|
output those messages still in a non-binary representation:
|
|
|
|
|
|
|
|
|
|
▌[37m[40m$ journalctl -a -o json | lnav [0m
|
|
|
|
|
|
|
|
|
|
If using systemd v236 or newer, the output fields can be limited to
|
2023-08-31 05:46:07 +00:00
|
|
|
|
the ones actually recognized by [37m[40m lnav [0m for increased efficiency:
|
2022-08-29 01:55:32 +00:00
|
|
|
|
|
2022-09-20 20:51:56 +00:00
|
|
|
|
▌[37m[40m$ journalctl -o json --output-fields=MESSAGE,PRIORITY,_PID,SYSLOG_IDENTIFIER,_SYSTEMD_UNIT | lnav [0m
|
2022-08-29 01:55:32 +00:00
|
|
|
|
|
|
|
|
|
If your system has been running for a long time, for increased
|
2023-08-31 05:46:07 +00:00
|
|
|
|
efficiency you may want to limit the number of log lines fed into
|
|
|
|
|
[37m[40m lnav [0m, e.g. via [37m[40m journalctl [0m's [37m[40m -n [0m or [37m[40m --since=... [0m options.
|
2022-08-29 01:55:32 +00:00
|
|
|
|
|
|
|
|
|
In case of a persistent journal, you may want to limit the number of
|
2023-08-31 05:46:07 +00:00
|
|
|
|
log lines fed into [37m[40m lnav [0m via [37m[40m journalctl [0m's [37m[40m -b [0m option.
|
2022-08-29 01:55:32 +00:00
|
|
|
|
|
|
|
|
|
[1mSupport[0m
|
|
|
|
|
|
|
|
|
|
Please file issues on this repository or use the discussions section.
|
|
|
|
|
The following alternatives are also available:
|
|
|
|
|
|
2024-05-18 13:52:18 +00:00
|
|
|
|
[33m•[0m ]8;;mailto:support@lnav.org\[4msupport@lnav.org[0m]8;;\¹
|
|
|
|
|
[33m•[0m ]8;;https://discord.gg/erBPnKwz7R\[4mDiscord[0m]8;;\²
|
|
|
|
|
[33m•[0m ]8;;https://groups.google.com/g/lnav\[4mGoogle Groups[0m]8;;\³
|
2022-08-29 01:55:32 +00:00
|
|
|
|
|
2024-05-17 04:07:35 +00:00
|
|
|
|
[34m▌[0m[1] - mailto:support@lnav.org
|
|
|
|
|
[34m▌[0m[2] - https://discord.gg/erBPnKwz7R
|
|
|
|
|
[34m▌[0m[3] - https://groups.google.com/g/lnav
|
2022-08-29 01:55:32 +00:00
|
|
|
|
|
|
|
|
|
[1mLinks[0m
|
|
|
|
|
|
2024-05-18 13:52:18 +00:00
|
|
|
|
[33m•[0m ]8;;https://lnav.org\[4mMain Site[0m]8;;\¹
|
|
|
|
|
[33m•[0m ]8;;https://docs.lnav.org\[1m[4mDocumentation[0m]8;;\² on Read the Docs
|
2024-05-22 05:21:46 +00:00
|
|
|
|
[33m•[0m ]8;;file://{top_srcdir}/ARCHITECTURE.md\[4mInternal Architecture[0m]8;;\³
|
2022-08-29 01:55:32 +00:00
|
|
|
|
|
2024-05-17 04:07:35 +00:00
|
|
|
|
[34m▌[0m[1] - https://lnav.org
|
|
|
|
|
[34m▌[0m[2] - https://docs.lnav.org
|
|
|
|
|
[34m▌[0m[3] - file://{top_srcdir}/ARCHITECTURE.md
|
2022-08-29 01:55:32 +00:00
|
|
|
|
|
|
|
|
|
[1mContributing[0m
|
|
|
|
|
|
2024-05-18 13:52:18 +00:00
|
|
|
|
[33m•[0m ]8;;https://github.com/sponsors/tstack\[4mBecome a Sponsor on GitHub[0m]8;;\¹
|
2022-08-29 01:55:32 +00:00
|
|
|
|
|
2024-05-17 04:07:35 +00:00
|
|
|
|
[34m▌[0m[1] - https://github.com/sponsors/tstack
|
2022-08-29 01:55:32 +00:00
|
|
|
|
|
|
|
|
|
[4mBuilding From Source[0m
|
|
|
|
|
|
|
|
|
|
[4mPrerequisites[0m
|
|
|
|
|
|
|
|
|
|
The following software packages are required to build lnav:
|
|
|
|
|
|
|
|
|
|
[33m•[0m gcc/clang - A C++14-compatible compiler.
|
2022-09-12 14:18:26 +00:00
|
|
|
|
[33m•[0m libpcre2 - The Perl Compatible Regular Expression v2
|
|
|
|
|
(PCRE2) library.
|
2023-08-31 05:46:07 +00:00
|
|
|
|
[33m•[0m sqlite - The SQLite database engine. Version
|
|
|
|
|
3.9.0 or higher is required.
|
2022-08-29 01:55:32 +00:00
|
|
|
|
[33m•[0m ncurses - The ncurses text UI library.
|
|
|
|
|
[33m•[0m readline - The readline line editing library.
|
|
|
|
|
[33m•[0m zlib - The zlib compression library.
|
|
|
|
|
[33m•[0m bz2 - The bzip2 compression library.
|
|
|
|
|
[33m•[0m libcurl - The cURL library for downloading files
|
|
|
|
|
from URLs. Version 7.23.0 or higher is required.
|
2023-08-31 05:46:07 +00:00
|
|
|
|
[33m•[0m libarchive - The libarchive library for opening
|
|
|
|
|
archive files, like zip/tgz.
|
2022-08-29 01:55:32 +00:00
|
|
|
|
[33m•[0m wireshark - The [35m'tshark'[0m program is used to interpret
|
|
|
|
|
pcap files.
|
2024-03-28 04:27:03 +00:00
|
|
|
|
[33m•[0m cargo/rust - The Rust language is used to build the
|
|
|
|
|
PRQL compiler.
|
2022-08-29 01:55:32 +00:00
|
|
|
|
|
|
|
|
|
[4mBuild[0m
|
|
|
|
|
|
|
|
|
|
Lnav follows the usual GNU style for configuring and installing
|
|
|
|
|
software:
|
|
|
|
|
|
2023-08-31 05:46:07 +00:00
|
|
|
|
Run [37m[40m ./autogen.sh [0m if compiling from a cloned repository.
|
2022-08-29 01:55:32 +00:00
|
|
|
|
|
|
|
|
|
▌[33m[40m$ [0m[37m[40m./configure [0m
|
|
|
|
|
▌[33m[40m$ [0m[37m[40mmake [0m
|
|
|
|
|
▌[33m[40m$ [0m[37m[40msudo make install [0m
|
|
|
|
|
|
|
|
|
|
[1mSee Also[0m
|
|
|
|
|
|
2024-05-18 13:52:18 +00:00
|
|
|
|
]8;;https://github.com/rcoh/angle-grinder\[4mAngle-grinder[0m]8;;\¹ is a tool to slice and dice log files on the
|
2022-08-29 01:55:32 +00:00
|
|
|
|
command-line. If you're familiar with the SumoLogic query language,
|
|
|
|
|
you might find this tool more comfortable to work with.
|
|
|
|
|
|
2024-05-17 04:07:35 +00:00
|
|
|
|
[34m▌[0m[1] - https://github.com/rcoh/angle-grinder
|