mirror of
https://github.com/tstack/lnav.git
synced 2024-10-26 13:16:11 +03:00
[tests] add set-text-view-mode tests
This commit is contained in:
parent
a5d12dc948
commit
34aeaf7541
@ -1254,8 +1254,12 @@ EXPECTED_FILES = \
|
||||
$(srcdir)/%reldir%/test_sql_yaml_func.sh_dc189d02e8979b7ed245d5d750f68b9965984699.out \
|
||||
$(srcdir)/%reldir%/test_text_file.sh_02a0514e0e384e5511ae202ea519552ba04030ed.err \
|
||||
$(srcdir)/%reldir%/test_text_file.sh_02a0514e0e384e5511ae202ea519552ba04030ed.out \
|
||||
$(srcdir)/%reldir%/test_text_file.sh_08d527b6655b80eb3fc9f19d502b08ce28d71c80.err \
|
||||
$(srcdir)/%reldir%/test_text_file.sh_08d527b6655b80eb3fc9f19d502b08ce28d71c80.out \
|
||||
$(srcdir)/%reldir%/test_text_file.sh_0bba304f34ae07c4fa9e91e0b42f5fe98654a6a8.err \
|
||||
$(srcdir)/%reldir%/test_text_file.sh_0bba304f34ae07c4fa9e91e0b42f5fe98654a6a8.out \
|
||||
$(srcdir)/%reldir%/test_text_file.sh_0f6afd335910722eaf816d6c3ef430ee64e65c4b.err \
|
||||
$(srcdir)/%reldir%/test_text_file.sh_0f6afd335910722eaf816d6c3ef430ee64e65c4b.out \
|
||||
$(srcdir)/%reldir%/test_text_file.sh_11fd274911e45a743b4de616888a64183d07cb76.err \
|
||||
$(srcdir)/%reldir%/test_text_file.sh_11fd274911e45a743b4de616888a64183d07cb76.out \
|
||||
$(srcdir)/%reldir%/test_text_file.sh_143a40164c93c7ec44a66e7940b92b128a421147.err \
|
||||
@ -1300,6 +1304,8 @@ EXPECTED_FILES = \
|
||||
$(srcdir)/%reldir%/test_text_file.sh_ac872aadda29b9a824361a2c711d62ec1c75d40f.out \
|
||||
$(srcdir)/%reldir%/test_text_file.sh_c2a346ca1da2da4346f1d310212e166767993ce9.err \
|
||||
$(srcdir)/%reldir%/test_text_file.sh_c2a346ca1da2da4346f1d310212e166767993ce9.out \
|
||||
$(srcdir)/%reldir%/test_text_file.sh_c597350651d168f504b28bd34d7bec015eef8634.err \
|
||||
$(srcdir)/%reldir%/test_text_file.sh_c597350651d168f504b28bd34d7bec015eef8634.out \
|
||||
$(srcdir)/%reldir%/test_text_file.sh_d59b67113864ef5e77267d7fd8ad4072f5aef0fc.err \
|
||||
$(srcdir)/%reldir%/test_text_file.sh_d59b67113864ef5e77267d7fd8ad4072f5aef0fc.out \
|
||||
$(srcdir)/%reldir%/test_text_file.sh_e088ea61a5382458cc48a2607e2639e52b0be1da.err \
|
||||
|
@ -0,0 +1,202 @@
|
||||
[32m<!-- This is a comment for testing purposes -->[0m
|
||||
|
||||
[![Build](https://github.com/tstack/lnav/workflows/ci-build/badge.svg)](https://github.com/tstack/lnav/actions?[4mquery[0m=workflow%3Aci-build)
|
||||
[![Docs](https://readthedocs.org/projects/lnav/badge/?[4mversion[0m=latest&[4mstyle[0m=plastic)](https://docs.lnav.org)
|
||||
[![Coverage Status](https://coveralls.io/repos/github/tstack/lnav/badge.svg?[4mbranch[0m=master)](https://coveralls.io/github/tstack/lnav?[4mbranch[0m=master)
|
||||
[![lnav](https://snapcraft.io/lnav/badge.svg)](https://snapcraft.io/lnav)
|
||||
|
||||
[<img [4msrc[0m=[35m"https://assets-global.website-files.com/6257adef93867e50d84d30e2/62594fddd654fc29fcc07359_cb48d2a8d4991281d7a6a95d2f58195e.svg"[0m [4mheight[0m=[35m"20"[0m [4malt[0m=[35m"Discord Logo"[0m/>](https://discord.gg/erBPnKwz7R)
|
||||
|
||||
_This is the source repository for **lnav**, visit [https://lnav.org](https://lnav.org) for a high level overview._
|
||||
|
||||
# LNAV -- The Logfile Navigator
|
||||
|
||||
The Logfile Navigator is a log file viewer for the terminal. Given a
|
||||
set of files/directories, **lnav** will:
|
||||
|
||||
- decompress as needed;
|
||||
- detect their format;
|
||||
- merge the files together by time into a single view;
|
||||
- tail the files, follow renames, find new files in directories;
|
||||
- build an index of errors and warnings;
|
||||
- [pretty-print JSON-lines](https://docs.lnav.org/en/latest/formats.html#json-lines).
|
||||
|
||||
Then, in the **lnav** TUI, you can:
|
||||
|
||||
- jump quickly to the previous/next error ([press [35m`e`[0m/[35m`E`[0m](https://docs.lnav.org/en/latest/hotkeys.html#spatial-navigation));
|
||||
- search using regular expressions ([press [35m`/`[0m](https://docs.lnav.org/en/latest/hotkeys.html#spatial-navigation));
|
||||
- highlight text with a regular expression ([[35m`:highlight`[0m](https://docs.lnav.org/en/latest/commands.html#highlight-pattern) command);
|
||||
- filter messages using [regular expressions](https://docs.lnav.org/en/latest/usage.html#regular-expression-match) or [SQLite expressions](https://docs.lnav.org/en/latest/usage.html#sqlite-expression);
|
||||
- pretty-print structured text ([press [35m`P`[0m](https://docs.lnav.org/en/latest/ui.html#pretty));
|
||||
- view a histogram of messages over time ([press [35m`i`[0m](https://docs.lnav.org/en/latest/ui.html#hist));
|
||||
- query messages using SQLite ([press [35m`;`[0m](https://docs.lnav.org/en/latest/sqlext.html))
|
||||
|
||||
## Screenshot
|
||||
|
||||
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.
|
||||
|
||||
[![Screenshot](docs/assets/images/lnav-front-page.png)](docs/assets/images/lnav-front-page.png)
|
||||
|
||||
## Why not **just** use [35m`tail`[0m/[35m`grep`[0m/[35m`less`[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.
|
||||
|
||||
## Try online before installing
|
||||
|
||||
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:
|
||||
|
||||
[[35m`$ ssh playground@demo.lnav.org`[0m](ssh://playground@demo.lnav.org)
|
||||
|
||||
The [35m"tutorial 1"[0m account is an interactive tutorial that can teach
|
||||
you the basics of operation:
|
||||
|
||||
[[35m`$ ssh tutorial1@demo.lnav.org`[0m](ssh://tutorial1@demo.lnav.org)
|
||||
|
||||
## Installation
|
||||
|
||||
[Download a statically-linked binary for Linux/MacOS from the release page](https://github.com/tstack/lnav/releases/latest#release-artifacts)
|
||||
|
||||
### Brew on MacOS
|
||||
|
||||
[35m``[0m`console
|
||||
$ brew install lnav
|
||||
[35m``[0m`
|
||||
|
||||
## Usage
|
||||
|
||||
Simply point **lnav** at the files or directories you want to
|
||||
monitor, it will figure out the rest:
|
||||
|
||||
[35m``[0m`console
|
||||
$ lnav /path/to/file1 /path/to/dir ...
|
||||
[35m``[0m`
|
||||
|
||||
The **lnav** 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 were recognized[^1]. You can then use the
|
||||
usual hotkeys to move around the view (arrow keys or
|
||||
[35m`j`[0m/[35m`k`[0m/[35m`h`[0m/[35m`l`[0m to move down/up/left/right).
|
||||
|
||||
See the [Usage section](https://docs.lnav.org/en/latest/usage.html)
|
||||
of the online documentation for more information.
|
||||
|
||||
[^1]: Files that do not contain log messages can be seen in the
|
||||
TEXT view (reachable by pressing [35m`t`[0m).
|
||||
|
||||
### Usage with [35m`systemd-journald`[0m
|
||||
|
||||
On systems running [35m`systemd-journald`[0m, you can use [35m`lnav`[0m as the pager:
|
||||
|
||||
[35m``[0m`
|
||||
$ journalctl | lnav
|
||||
[35m``[0m`
|
||||
|
||||
or in follow mode:
|
||||
|
||||
[35m``[0m`
|
||||
$ journalctl -f | lnav
|
||||
[35m``[0m`
|
||||
|
||||
Since [35m`journalctl`[0m'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 [35m`lnav`[0m gets confused:
|
||||
|
||||
[35m``[0m`
|
||||
$ journalctl -o short-iso | lnav
|
||||
[35m``[0m`
|
||||
|
||||
It is also possible to use [35m`journalctl`[0m's json output format and [35m`lnav`[0m
|
||||
will make use of additional fields such as PRIORITY and \_SYSTEMD_UNIT:
|
||||
|
||||
[35m``[0m`
|
||||
$ journalctl -o json | lnav
|
||||
[35m``[0m`
|
||||
|
||||
In case some MESSAGE fields contain special characters such as
|
||||
ANSI color codes which are considered as unprintable by journalctl,
|
||||
specifying [35m`journalctl`[0m's [35m`-a`[0m option might be preferable in order
|
||||
to output those messages still in a non-binary representation:
|
||||
|
||||
[35m``[0m`
|
||||
$ journalctl -a -o json | lnav
|
||||
[35m``[0m`
|
||||
|
||||
If using systemd v236 or newer, the output fields can be limited to
|
||||
the ones actually recognized by [35m`lnav`[0m for increased efficiency:
|
||||
|
||||
[35m``[0m`
|
||||
$ journalctl -o json [4m--output-fields[0m=MESSAGE,PRIORITY,_PID,SYSLOG_IDENTIFIER,_SYSTEMD_UNIT | lnav
|
||||
[35m``[0m`
|
||||
|
||||
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
|
||||
[35m`lnav`[0m, e.g. via [35m`journalctl`[0m's [35m`-n`[0m or [35m`--since=...`[0m options.
|
||||
|
||||
In case of a persistent journal, you may want to limit the number
|
||||
of log lines fed into [35m`lnav`[0m via [35m`journalctl`[0m's [35m`-b`[0m option.
|
||||
|
||||
## 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)
|
||||
|
||||
## Links
|
||||
|
||||
- [Main Site](https://lnav.org)
|
||||
- [**Documentation**](https://docs.lnav.org) on Read the Docs
|
||||
- [Internal Architecture](ARCHITECTURE.md)
|
||||
|
||||
## 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.
|
||||
- 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.
|
||||
- wireshark - The [35m'tshark'[0m program is used to interpret pcap files.
|
||||
- cargo/rust - The Rust language is used to build the PRQL compiler.
|
||||
|
||||
#### Build
|
||||
|
||||
Lnav follows the usual GNU style for configuring and installing software:
|
||||
|
||||
Run [35m`./autogen.sh`[0m if compiling from a cloned repository.
|
||||
|
||||
[35m``[0m`console
|
||||
$ ./configure
|
||||
$ make
|
||||
$ sudo make install
|
||||
[35m``[0m`
|
||||
|
||||
## See Also
|
||||
|
||||
[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.
|
@ -0,0 +1,6 @@
|
||||
[1m[31m✘ error[0m: expecting a view mode of 'raw' or 'rendered'
|
||||
[36m --> [0m[1mcommand-option[0m:1
|
||||
[36m | [0m[37m[40m:[0m[1m[36m[40mset-text-view-mode[0m[37m[40m blah [0m
|
||||
[36m =[0m [36mhelp[0m: [4m:[0m[1m[4mset-text-view-mode[0m[4m [0m[4mmode[0m
|
||||
══════════════════════════════════════════════════════════════════════
|
||||
Set the display mode for text files
|
@ -0,0 +1,6 @@
|
||||
[1m[31m✘ error[0m: expecting a view mode of 'raw' or 'rendered'
|
||||
[36m --> [0m[1mcommand-option[0m:1
|
||||
[36m | [0m[37m[40m:set-text-view-mode [0m
|
||||
[36m =[0m [36mhelp[0m: [4m:[0m[1m[4mset-text-view-mode[0m[4m [0m[4mmode[0m
|
||||
══════════════════════════════════════════════════════════════════════
|
||||
Set the display mode for text files
|
@ -122,3 +122,13 @@ ${test_dir}/naughty_files.py
|
||||
run_cap_test ${lnav_test} -n naughty/file-with-hidden-text.txt
|
||||
|
||||
run_cap_test ${lnav_test} -n naughty/file-with-terminal-controls.txt
|
||||
|
||||
run_cap_test ${lnav_test} -nN \
|
||||
-c ':set-text-view-mode'
|
||||
|
||||
run_cap_test ${lnav_test} -nN \
|
||||
-c ':set-text-view-mode blah'
|
||||
|
||||
run_cap_test ${lnav_test} -n \
|
||||
-c ':set-text-view-mode raw' \
|
||||
${top_srcdir}/README.md
|
||||
|
Loading…
Reference in New Issue
Block a user