2013-04-10 05:36:08 +00:00
|
|
|
[![Build Status](https://travis-ci.org/tstack/lnav.png)](https://travis-ci.org/tstack/lnav)
|
2016-06-04 19:52:32 +00:00
|
|
|
[![Build status](https://ci.appveyor.com/api/projects/status/24wskehb7j7a65ro?svg=true)](https://ci.appveyor.com/project/tstack/lnav)
|
2015-10-08 03:14:33 +00:00
|
|
|
[![Bounties](https://img.shields.io/bountysource/team/lnav/activity.svg)](https://www.bountysource.com/teams/lnav)
|
2016-12-24 20:57:46 +00:00
|
|
|
[![LoC](https://tokei.rs/b1/github/tstack/lnav)](https://github.com/tstack/lnav).
|
2013-04-10 05:36:08 +00:00
|
|
|
|
2013-08-30 15:55:49 +00:00
|
|
|
_This is the source repository for **lnav**, visit [http://lnav.org](http://lnav.org) for a high level overview._
|
|
|
|
|
2017-05-09 18:02:38 +00:00
|
|
|
# LNAV -- The Logfile Navigator
|
2013-04-10 05:36:08 +00:00
|
|
|
|
|
|
|
The log file navigator, lnav, is an enhanced log file viewer that
|
|
|
|
takes advantage of any semantic information that can be gleaned from
|
|
|
|
the files being viewed, such as timestamps and log levels. Using this
|
|
|
|
extra semantic information, lnav can do things like interleaving
|
|
|
|
messages from different files, generate histograms of messages over
|
|
|
|
time, and providing hotkeys for navigating through the file. It is
|
|
|
|
hoped that these features will allow the user to quickly and
|
|
|
|
efficiently zero in on problems.
|
|
|
|
|
|
|
|
|
2017-05-09 18:02:38 +00:00
|
|
|
## Prerequisites
|
2013-04-10 05:36:08 +00:00
|
|
|
|
2017-03-16 00:01:58 +00:00
|
|
|
The following software packages are required to build lnav:
|
2013-04-10 05:36:08 +00:00
|
|
|
|
2017-03-16 00:01:58 +00:00
|
|
|
* gcc/clang - A C++14-compatible compiler.
|
2013-04-10 05:36:08 +00:00
|
|
|
* libpcre - The Perl Compatible Regular Expression (PCRE) library.
|
2017-03-16 00:01:58 +00:00
|
|
|
* sqlite - The SQLite database engine. Version 3.9.0 or higher is required.
|
2013-04-10 05:36:08 +00:00
|
|
|
* ncurses - The ncurses text UI library.
|
|
|
|
* readline - The readline line editing library.
|
|
|
|
* zlib - The zlib compression library.
|
|
|
|
* bz2 - The bzip2 compression library.
|
2017-03-16 00:01:58 +00:00
|
|
|
* libcurl - The cURL library for downloading files from URLs. Version 7.23.0 or higher is required.
|
2013-04-10 05:36:08 +00:00
|
|
|
|
|
|
|
|
2017-05-09 18:02:38 +00:00
|
|
|
## Installation
|
2013-04-10 05:36:08 +00:00
|
|
|
|
|
|
|
Lnav follows the usual GNU style for configuring and installing software:
|
|
|
|
|
|
|
|
$ ./configure
|
|
|
|
$ make
|
|
|
|
$ sudo make install
|
|
|
|
|
2017-04-19 10:36:22 +00:00
|
|
|
__Run `./autogen.sh` before running any of the above commands when
|
2015-04-05 09:53:51 +00:00
|
|
|
compiling from a cloned repository.__
|
2013-04-10 05:36:08 +00:00
|
|
|
|
2016-05-31 13:18:37 +00:00
|
|
|
|
2017-05-09 18:02:38 +00:00
|
|
|
## Cygwin users
|
2016-05-31 13:18:37 +00:00
|
|
|
|
|
|
|
It should compile fine in Cygwin.
|
|
|
|
|
2016-06-04 19:52:32 +00:00
|
|
|
Alternatively, you can get the generated binary from [AppVeyor](https://ci.appveyor.com/project/tstack/lnav) artifacts.
|
2016-05-31 13:18:37 +00:00
|
|
|
|
|
|
|
Remember that you still need the lnav dependencies under Cygwin, here is a quick way to do it:
|
|
|
|
|
2017-04-19 10:36:22 +00:00
|
|
|
setup-x86_64.exe -q -P libpcre1 -P libpcrecpp0 -P libsqlite3_0 -P libstdc++6
|
2016-05-31 13:18:37 +00:00
|
|
|
|
|
|
|
Currently, the x64 version seems to be working better than the x86 one.
|
|
|
|
|
|
|
|
|
2017-05-09 18:02:38 +00:00
|
|
|
## Usage
|
2013-04-10 05:36:08 +00:00
|
|
|
|
2017-04-19 10:36:22 +00:00
|
|
|
The only file installed is the executable, `lnav`. You can execute it
|
2013-04-10 05:36:08 +00:00
|
|
|
with no arguments to view the default set of files:
|
|
|
|
|
|
|
|
$ lnav
|
|
|
|
|
|
|
|
You can view all the syslog messages by running:
|
|
|
|
|
|
|
|
$ lnav /var/log/messages*
|
|
|
|
|
2017-05-09 18:02:38 +00:00
|
|
|
### Usage with `systemd-journald`
|
2017-04-19 11:19:47 +00:00
|
|
|
|
|
|
|
On systems running `systemd-journald`, you can use `lnav` as the pager:
|
|
|
|
|
|
|
|
$ journalctl | lnav
|
|
|
|
|
|
|
|
or in follow mode:
|
|
|
|
|
|
|
|
$ journalctl -f | lnav
|
|
|
|
|
|
|
|
Since `journalctl`'s default output format omits the year, if you are
|
|
|
|
viewing logs which span multiple years you will need to change the
|
|
|
|
output format to include the year, otherwise `lnav` gets confused:
|
|
|
|
|
|
|
|
$ journalctl -o short-iso | lnav
|
|
|
|
|
2018-08-25 15:32:34 +00:00
|
|
|
It is also possible to use `journalctl`'s json output format and `lnav`
|
2018-08-25 16:38:55 +00:00
|
|
|
will make use of additional fields such as PRIORITY and _SYSTEMD_UNIT:
|
2018-08-25 15:32:34 +00:00
|
|
|
|
|
|
|
$ journalctl -o json | lnav
|
|
|
|
|
2018-08-25 16:38:55 +00:00
|
|
|
In case some MESSAGE fields contain special characters such as
|
|
|
|
ANSI color codes which are considered as unprintable by journalctl,
|
|
|
|
specifying `journalctl`'s `-a` option might be preferable in order
|
|
|
|
to output those messages still in a non binary representation:
|
|
|
|
|
|
|
|
$ journalctl -a -o json | lnav
|
|
|
|
|
2018-08-25 15:32:34 +00:00
|
|
|
If using systemd v236 or newer, the output fields can be limited to
|
|
|
|
the ones actually recognized by `lnav` for increased efficiency:
|
|
|
|
|
|
|
|
$ journalctl -o json --output-fields=MESSAGE,PRIORITY,_PID,SYSLOG_IDENTIFIER,_SYSTEMD_UNIT | lnav
|
|
|
|
|
2017-04-19 11:19:47 +00:00
|
|
|
If your system has been running for a long time, for increased
|
|
|
|
efficiency you may want to limit the number of log lines fed into
|
|
|
|
`lnav`, e.g. via `journalctl`'s `-n` or `--since=...` options.
|
|
|
|
|
2018-08-25 15:32:34 +00:00
|
|
|
In case of a persistent journal, you may want to limit the number
|
|
|
|
of log lines fed into `lnav` via `journalctl`'s `-b` option.
|
|
|
|
|
2017-05-09 18:02:38 +00:00
|
|
|
## Screenshot
|
2013-04-10 05:36:08 +00:00
|
|
|
|
|
|
|
The following screenshot shows a syslog file. Log lines are displayed with
|
|
|
|
highlights. Errors are red and warnings are yellow.
|
|
|
|
|
|
|
|
[![Screenshot](http://tstack.github.io/lnav/lnav-syslog-thumb.png)](http://tstack.github.io/lnav/lnav-syslog.png)
|
|
|
|
|
2017-04-19 10:36:22 +00:00
|
|
|
|
2013-04-10 05:36:08 +00:00
|
|
|
See Also
|
|
|
|
--------
|
|
|
|
|
|
|
|
The lnav website can be found at:
|
|
|
|
|
|
|
|
> [http://lnav.org](http://lnav.org)
|
2017-05-09 18:02:38 +00:00
|
|
|
|