1
1
mirror of https://github.com/tstack/lnav.git synced 2024-11-08 22:14:26 +03:00
lnav/README.md

158 lines
5.0 KiB
Markdown
Raw Normal View History

<!-- This is a comment for testing purposes -->
[![Build](https://github.com/tstack/lnav/workflows/ci-build/badge.svg)](https://github.com/tstack/lnav/actions?query=workflow%3Aci-build)
[![Docs](https://readthedocs.org/projects/lnav/badge/?version=latest&style=plastic)](https://docs.lnav.org)
2021-02-07 10:08:01 +03:00
[![Coverage Status](https://coveralls.io/repos/github/tstack/lnav/badge.svg?branch=master)](https://coveralls.io/github/tstack/lnav?branch=master)
[![lnav](https://snapcraft.io/lnav/badge.svg)](https://snapcraft.io/lnav)
2013-04-10 09:36:08 +04:00
[<img src="https://assets-global.website-files.com/6257adef93867e50d84d30e2/62594fddd654fc29fcc07359_cb48d2a8d4991281d7a6a95d2f58195e.svg" height="20"/>](https://discord.gg/erBPnKwz7R)
2022-08-17 23:08:16 +03:00
2021-08-25 14:19:26 +03:00
_This is the source repository for **lnav**, visit [https://lnav.org](https://lnav.org) for a high level overview._
2017-05-09 21:02:38 +03:00
# LNAV -- The Logfile Navigator
2013-04-10 09:36:08 +04:00
The Log File Navigator, **lnav** for short, is an advanced log file viewer
for the small-scale. It is a terminal application that can understand
your log files and make it easy for you to find problems with little to
no setup.
2021-03-23 23:47:02 +03:00
## Screenshot
2021-03-23 23:47:02 +03:00
The following screenshot shows a syslog file. Log lines are displayed with
highlights. Errors are red and warnings are yellow.
2013-04-10 09:36:08 +04:00
2021-06-13 08:33:22 +03:00
[![Screenshot](docs/assets/images/lnav-syslog-thumb.png)](docs/assets/images/lnav-syslog.png)
2013-04-10 09:36:08 +04:00
## Features
2021-02-08 08:30:02 +03:00
- Log messages from different files are collated together into a single view
- Automatic detection of log format
- Automatic decompression of GZip and BZip2 files
- Filter log messages based on regular expressions
- Use SQL to analyze your logs
- And more...
2017-05-09 21:02:38 +03:00
## Installation
2013-04-10 09:36:08 +04:00
2021-03-23 23:47:02 +03:00
[Download a statically-linked binary for Linux/MacOS from the release page](https://github.com/tstack/lnav/releases/latest#release-artifacts)
2017-05-09 21:02:38 +03:00
## Usage
2013-04-10 09:36:08 +04:00
2017-04-19 13:36:22 +03:00
The only file installed is the executable, `lnav`. You can execute it
2013-04-10 09:36:08 +04:00
with no arguments to view the default set of files:
2021-02-08 08:30:02 +03:00
```
$ lnav
```
2013-04-10 09:36:08 +04:00
You can view all the syslog messages by running:
2021-02-08 08:30:02 +03:00
```
$ lnav /var/log/messages*
```
2013-04-10 09:36:08 +04:00
2017-05-09 21:02:38 +03:00
### Usage with `systemd-journald`
On systems running `systemd-journald`, you can use `lnav` as the pager:
2021-02-08 08:30:02 +03:00
```
$ journalctl | lnav
```
or in follow mode:
2021-02-08 08:30:02 +03:00
```
$ 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:
2021-02-08 08:30:02 +03:00
```
$ journalctl -o short-iso | lnav
```
It is also possible to use `journalctl`'s json output format and `lnav`
2021-02-08 08:30:02 +03:00
will make use of additional fields such as PRIORITY and \_SYSTEMD_UNIT:
2021-02-08 08:30:02 +03:00
```
$ journalctl -o json | lnav
```
2018-08-25 19:38:55 +03: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
2022-08-17 23:11:57 +03:00
to output those messages still in a non-binary representation:
2018-08-25 19:38:55 +03:00
2021-02-08 08:30:02 +03:00
```
$ journalctl -a -o json | lnav
```
2018-08-25 19:38:55 +03:00
If using systemd v236 or newer, the output fields can be limited to
the ones actually recognized by `lnav` for increased efficiency:
2021-02-08 08:30:02 +03:00
```
$ journalctl -o json --output-fields=MESSAGE,PRIORITY,_PID,SYSLOG_IDENTIFIER,_SYSTEMD_UNIT | lnav
```
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.
In case of a persistent journal, you may want to limit the number
of log lines fed into `lnav` via `journalctl`'s `-b` option.
2022-08-17 23:11:57 +03:00
## Support
Please file issues on this repository or use the discussions section.
The following alternatives are also available:
- [support@lnav.org](mailto:support@lnav.org)
- [Discord](https://discord.gg/erBPnKwz7R)
- [Google Groups](https://groups.google.com/g/lnav)
2021-03-23 23:47:02 +03:00
## Links
2013-04-10 09:36:08 +04:00
2021-03-23 23:47:02 +03:00
- [Main Site](https://lnav.org)
- [**Documentation**](https://docs.lnav.org) on Read the Docs
- [Internal Architecture](ARCHITECTURE.md)
2013-04-10 09:36:08 +04:00
2021-03-23 23:47:02 +03:00
## Contributing
- [Become a Sponsor on GitHub](https://github.com/sponsors/tstack)
### Building From Source
#### Prerequisites
The following software packages are required to build lnav:
- gcc/clang - A C++14-compatible compiler.
- libpcre2 - The Perl Compatible Regular Expression v2 (PCRE2) library.
2021-03-23 23:47:02 +03:00
- sqlite - The SQLite database engine. Version 3.9.0 or higher is required.
- ncurses - The ncurses text UI library.
- readline - The readline line editing library.
- zlib - The zlib compression library.
- bz2 - The bzip2 compression library.
- libcurl - The cURL library for downloading files from URLs. Version 7.23.0 or higher is required.
- libarchive - The libarchive library for opening archive files, like zip/tgz.
2021-11-06 01:13:16 +03:00
- wireshark - The 'tshark' program is used to interpret pcap files.
2021-03-23 23:47:02 +03:00
#### Build
Lnav follows the usual GNU style for configuring and installing software:
Run `./autogen.sh` if compiling from a cloned repository.
```console
2021-03-23 23:47:02 +03:00
$ ./configure
$ make
$ sudo make install
```
2013-04-10 09:36:08 +04:00
2020-09-13 00:06:23 +03:00
## See Also
2013-04-10 09:36:08 +04:00
[Angle-grinder](https://github.com/rcoh/angle-grinder) is a tool to slice and dice log files on the command-line.
If you're familiar with the SumoLogic query language, you might find this tool more comfortable to work with.