Releases: tstack/lnav
v0.14.0-beta2
lnav v0.14.0
Features:
-
The Filter configuration panel in the TUI now supports
editing the minimum log level and minimum/maximum
times for the current view. Previously, only the
:set-min-log-level,:hide-lines-before, and
:hide-lines-aftercommands could be used to set the
values. Pressinglwill create/set the log level.
Pressingmwill create/set the minimum
time and pressingShift+Mwill create/set the
maximum time. Live preview has also been added to
show which lines will be filtered out when the min/max
is applied. -
The
-S/--sinceand-U/--untilflags have been
added to limit how much of a log file is indexed.
Supported values are relative (e.g. "yesterday",
"30 min ago") or absolute local times ("2020-01-01").
The values on the main command-line set the defaults
for all values that are opened. The:opencommand
supports the same options to change the values from
the default for a particular file. Files with
content that lie completely outside of the cutoff
will be closed to reduce resource usage. -
Broadened support for viewing files on remote hosts.
The "tailer" program that is transferred to the
remote host to monitor files and perform other tasks
has been translated to Python3. If the remote host
does not have Python, lnav will fall back to the APE
binary. -
The "Files" panel now shows a progress bar for each
file as it is being indexed and finishes with a
check-mark if indexing was successful, a warning
sign if the file has some notes, or an error mark
if something else happened. -
Introducing "Log-Oriented Debugging", a collection of
features to streamline mapping log messages back to
the source code that generated them. For example,
given the log message "Hello, Steve!" and the source
directory containing the log statement. lnav can
find the line of code that generated the message,
such aslogging.info("Hello, %s!", name), and
determine the value of the substituted variables
(name=>Steve). This functionality is
implemented using the
log2src project.
The following features have been added in support of
this functionality:- The
:add-source-pathcommand was added to specify
the source directories to be scanned for log
statements. - Log formats can now specify source file/line and
thread ID with thesrc-file-field,src-line-field,
andthread-id-fieldproperties. These fields can
then be accessed in the SQL vtables aslog_src_file,
log_src_line, andlog_thread_id. - The
:breakpoint,:toggle-breakpoint, and
:clear-breakpointscommands have been added to
support setting/clearing breakpoints for log messages.
TheCTRL-Bshortcut toggles a breakpoint on the
focused line in the LOG view. Also, if the log
format specifies source file/line fields, the first
character of the source file will be underlined and
can be clicked to toggle a breakpoint. Once
breakpoints have been added, you can pressF7/F8
to move to the previous/next log message that
matches a breakpoint.
- The
-
The
all_opidsandall_thread_idsvirtual tables
have been added to make it simple to discover all of
the operations and threads across all log files. The
all_opidstable also supports setting a description
for an operation using through anUPDATE. -
The
:xopencommand will now open text files in an
external editor. To open the file at a particular
line/column, add a URL fragment of the form
L<line>C<column>. -
When opening the contents of the prompt in an external
editor (CTRL+O), the cursor position will be preserved,
if possible. -
The
external-editorconfiguration has been expanded
with extra properties to help lnav choose the right one
to use:- The
config-dirproperty specifies the name of the
directory that stores the editor's configuration in a
source tree. If the directory is found in an ancestor
of the path to be opened, and it has the most recent
modified time, the associated editor will be used. - The
prefersproperty is a regular expression that
will be tested against the full path to be opened.
If matched, that editor will be chosen.
- The
-
The
:external-accesscommand has been added to open a
localhost HTTP port that can be used to remotely control
lnav. Requests can be sent to execute commands and poll
for changes in the view state. When the external port
is open, a globe icon (🌐) is displayed in the top-right
corner. Clicking that icon will open a URL in a browser
and log you into the server. The:external-access-login
command can also be used to login. -
Custom "Apps" can be added to the "external access"
server to provide custom browser-based user interfaces
to lnav. See the "External Access" documentation online
for more details. -
The
;.saveSQL command has been added that can save
tables you have created to a SQLite database file. The
tables that lnav creates have been moved to a separate
in-memory DB, so the main DB should only contain your
own tables/views/etc... -
The
json_object_count_of()SQL aggregate function has
been added to make it easy to create a JSON object
where the values are the number of times a value has
been seen. -
The
:write-json-cols-tocommand has been added to
write JSON output in a column-oriented fashion. -
The
encode()anddecode()SQL functions now accept
htmlas an algorithm. -
The
opid-fieldcan now be set to a JSON array/object
for JSON-lines logs. For example, thespansarray in
a Rust tracing log message. The OPID for the message
will be computed by hashing the contents of the array
or object and the description will be the container
itself. -
An OPID can now be constructed from multiple fields by
leaving theopid-fieldblank and creating a single
opid/descriptiondefinition with a format. The
content of the format fields will then be hashed to
create the OPID. The builtin log formats have been
updated to use this when appropriate. For example,
access_log now usesc_ipandcs_user_agentas the
OPID.[!NOTE]
If you want a description, but don't want it used as
the OPID. You can set theopid/sourcefield to
"from-whole-msg" and the OPID will be computed from
the contents of the log message. -
The
duration-fieldlog format property has been added
to specify the field that contains a duration in the
log message. If a duration is available, it will be
used to calculate time spans in the TIMELINE view. -
The
timestamp-point-of-referencelog format property
has been added to specify the related of the timestamp
to the operation that the message refers to, either:
start or send. This is used in conjunction with the
message duration to determine the time span. -
The OPID for log messages is now shown in the parser
details overlay (revealed by pressingp) in the
LOG view. -
Added
rust_tracing_logformat from @richard-hajek. -
Added
macosuni_logformat that understands the
output of the macOSlog stream --style=ndjson
command. -
Added the
idea_logformat from @segevfiner. -
The
strace_logformat has been improved to handle
more output formats and the syscalls will now show
up in the TIMELINE view. -
The
strace://URL-handler has been added to make it
easier to runstraceon an existing process. A
host must be given and the path should be the PID,
such asstrace://localhost/1234. -
Added the
nestableflag to the log format and
theme highlight configurations to control whether a
highlight can be applied to text that is covered by
another highlight. -
Search tables are now included in the output of
the:export-session-tocommand.
Breaking changes:
- All of lnav's SQLite tables have been moved to a
separate in-memory database that is attached as
lnav_db. You may need to update some of your SQL
statements to qualify table names withlnav_db..
This change was made so that the main DB only contains
user data that can be easily backed up to a new DB
file. - Timestamp columns and results from lnav time functions
now have microsecond precision instead of millisecond. - The "module format" functionality has been removed.
This functionality tried to match log messages wrapped
in another format (usually syslog), but it never
really worked well and was impeding progress in other
areas. Also, there have been many features added
since the beginning that can serve the same use cases. - The
sudo_logformat has been removed since it was
a module-only format. Instead, asudo_log
search-table was added to thesyslog_logformat.
Interface changes:
- Mouse mode is now enabled by default.
- The
CTRL+fhotkey has been remapped to the
:toggle-filteringcommand. - Aborting the prompt now requires two successive
presses ofEsc(a message will pop up on the right
that mentions this). SinceEscis also used to
close the completion popup, it was too easy to
cancel the prompt. PressingCTRL+]will still
close the prompt immediately. - The TIMELINE view has a few updates:
- The header has been redesigned to be one line that
shows the time increments at the current scale.
This approach should more clearly convey the spans
of time shown in the main part of the view. The
previous design tried to show the overall time and
the current time frame. But, the multi-line header
was hard to interpret and didn't make it clear how
large the time increments were. - Log files and threads are now shown in the view
in addition to...
- The header has been redesigned to be one line that
v0.13.2
lnav v0.13.2
Bug Fixes:
- Some keys were not recognized correctly because the
Kitty keyboard protocol handling was broken at the
last minute. - The TUI no longer opens if a bad file name is passed.
- The abbreviated month
%btime-conversion was not
always falling back to English locale, which could
prevent lnav from starting up. - The top of the LOG view could move in some cases when
filtering was enabled. - Some status bar fields were not always showing
updates.
v0.13.2-rc1
lnav v0.13.2
Bug Fixes:
- Kitty keyboard handling was broken at the last minute.
- The TUI no longer opens if a bad file name is passed.
- The abbreviated month
%btime-conversion was not
always falling back to English locale, which could
prevent lnav from starting up. - The top of the LOG view could move in some cases when
filtering was enabled. - Some status bar fields were not always showing
updates.
v0.13.1
lnav v0.13.1
Features:
- Initial support for Windows. Configuration should be stored
in%APPDATA%. The binary is built using msys2. So, it
depends on msys-2.0.dll being in the same directory. No other
dependencies should be needed. - Removed dependency on ncurses during the build. The terminfo
files are still used during runtime, but fallback terminfo
files for common terminals are included in the binary. - Added the postgres_log format. In addition, you can use
:annotateon a statement error line (e.g. syntax error
at or near "null" at character 522) to attach an annotation
with the statement and a pointer to the location of the error. - Added the mysql_gen_log, mysql_error_log, and mysql_slow_log
formats. There is also amysql_slow_statssearch table
that captures the various statistics available in a slow
query log message (e.g.query_time,lock_time, ...). - Added laravel_log format.
- Annotation handlers can now be lnav scripts if the "handler"
field starts with a pipe (|). - The
<span>tag in a Markdown now supports
white-space: nowrapin thestyleattribute. - Anchors can be added to Markdown using
<a name="...">.
Anchors show up in the breadcrumb bar and can be addressed
using the:gotocommand.
Interface changes:
- If all the content in the LOG/TEXT views is filtered out,
a notice will be displayed that describes the filters that
are in effect. - The chart in the SPECTRO view is now shifted to the right
so it does not cover the timestamp.
Bug Fixes:
- Fix a crash on startup for some environments.
- Fix a spurious screen flash on some prompts.
- Fix an issue with completion of script names.
- Handle abbreviated timezones (e.g. PDT/PST) in timestamps.
- Improve HTML handling in Markdown files.
- Fixed various issues in the SPECTRO view.
- Minor performance improvements.
v0.13.1-rc3
lnav v0.13.1
Features:
- Initial support for Windows. Configuration should be stored
in%APPDATA%. The binary is built using msys2. So, it
depends on msys-2.0.dll being in the same directory. No other
dependencies should be needed. - Removed dependency on ncurses during the build. The terminfo
files are still used during runtime, but fallback terminfo
files for common terminals are included in the binary. - Added the postgres_log format. In addition, you can use
:annotateon a statement error line (e.g. syntax error
at or near "null" at character 522) to attach an annotation
with the statement and a pointer to the location of the error. - Added the mysql_gen_log, mysql_error_log, and mysql_slow_log
formats. There is also amysql_slow_statssearch table
that captures the various statistics available in a slow
query log message (e.g.query_time,lock_time, ...). - Added laravel_log format.
- Annotation handlers can now be lnav scripts if the "handler"
field starts with a pipe (|). - The
<span>tag in a Markdown now supports
white-space: nowrapin thestyleattribute. - Anchors can be added to Markdown using
<a name="...">.
Anchors show up in the breadcrumb bar and can be addressed
using the:gotocommand.
Interface changes:
- If all the content in the LOG/TEXT views are filtered out,
a notice will be displayed that describes the filters that
are in effect. - The chart in the SPECTRO view is now shifted to the right
so it does not cover the timestamp.
Bug Fixes:
- Fix a crash on startup for some environments.
- Fix a spurious screen flash on some prompts.
- Fix an issue with completion of script names.
- Handle abbreviated timezones (e.g. PDT/PST) in timestamps.
- Improve HTML handling in Markdown files.
- Fixed various issues in the SPECTRO view.
- Minor performance improvements.
v0.13.1-rc2
lnav v0.13.1
Features:
- Initial support for Windows. Configuration should be stored
in%APPDATA%. The binary is built using msys2. So, it
depends on msys-2.0.dll being in the same directory. No other
dependencies should be needed. - Removed dependency on ncurses during the build. The terminfo
files are still used during runtime, but fallback terminfo
files for common terminals are included in the binary. - Added the postgres_log format. In addition, you can use
:annotateon a statement error line (e.g. syntax error
at or near "null" at character 522) to attach an annotation
with the statement and a pointer to the location of the error. - Added the mysql_gen_log, mysql_error_log, and mysql_slow_log
formats. There is also amysql_slow_statssearch table
that captures the various statistics available in a slow
query log message (e.g.query_time,lock_time, ...). - Added laravel_log format.
- Annotation handlers can now be lnav scripts if the "handler"
field starts with a pipe (|). - The
<span>tag in a Markdown now supports
white-space: nowrapin thestyleattribute. - Anchors can be added to Markdown using
<a name="...">.
Anchors show up in the breadcrumb bar and can be addressed
using the:gotocommand.
Interface changes:
- If all the content in the LOG/TEXT views are filtered out,
a notice will be displayed that describes the filters that
are in effect. - The chart in the SPECTRO view is now shifted to the right
so it does not cover the timestamp.
Bug Fixes:
- Fix a crash on startup for some environments.
- Fix a spurious screen flash on some prompts.
- Fix an issue with completion of script names.
- Handle abbreviated timezones (e.g. PDT/PST) in timestamps.
- Improve HTML handling in Markdown files.
- Fixed various issues in the SPECTRO view.
- Minor performance improvements.
v0.13.1-rc1
lnav v0.13.0
Interface changes:
- The prompt is now a custom implementation instead of readline.
Some highlights:-
In the DB prompt: pressing
CTRL+Lwill reformat the query and
switch the prompt to multi-line mode; error locations will be
highlighted. -
In multi-line mode, you can click and drag the status bar above
the prompt to resize the prompt. -
Pressing
CTRL+Oin the prompt will transfer the prompt to
contents to Visual Studio Code or the default text editor on
macOS.
You can then edit the file and run it from the|prompt with:|saved-prompt -
When editing a regular expression, like the search prompt or
for a filter, if the current pattern matches a line in the
view, the following word will be suggested.
For example, if the view has the text "foo bar baz" and you
type "foo ", the prompt will suggest "bar" and you can then
pressTABto complete. -
In the history listing, an icon indicates if the command or
query succeeded or failed. -
Mouse input works as expected: left-click positions the cursor
in a given location, and a click-drag will select text.
A right-click will copy the selected text to the system
clipboard.
-
- Pressing
F1in the prompt will show the help text for the
prompt itself.
The size of the prompt panel is expanded for readability. - When reading from stdin, the files used to store the content
will be rotated when they cross the/tuning/piper/max-size
threshold.
Previously, the name of the file in the TEXT view would just
be "stdin", but now it includes the rotation number. - The LOG and TEXT views will now display a message if they
contain no content to make it clear to the user that they
need to switch views or:opena file. - The HIST view now supports bookmarks, so you can use the usual
hotkeys to move to the next/previous time segment with
errors/warnings/marks. - In table cells, control characters are replaced with Unicode
symbols and highlighted with the 'hidden' style from the theme. - The
Shift+Bhotkey will now jump to the start of a log
message in the LOG view if the currently focused line is in the
middle of a multi-line log message. - When the
:hide-unmarked-linescommand is used in the LOG
view, if any line in a message is marked, the entire message
will be shown.
Features:
- The
:commentcommand will now switch the prompt to multi-line
mode and does syntax highlighting for Markdown directives in the
comment.
The rendered Markdown will also now be shown in the preview panel. - lnav code blocks in Markdown content now have a play button (▶)
next to commands that you can click on to run the command. - Scrolling right in the LOG view when at the start of a message
can hide the timestamp/level fields in the message and insert a
shorter timestamp column on the left side.
The column should take less space than the existing field and
aligns all timestamps across all log formats.
This feature is gated by the/ui/views/log/time-column
setting, with the following values:disabled: scrolling right works as normal and does not insert
the time column.enabled: scrolling right enables the time column.default: the time column is enabled and the default on startup.
- Added a
fuzzy_match()SQL function that compares a pattern to
a string and returns a score.
The algorithm used is the same as in lnav itself. - Added a
match_rowidcolumn to search tables to make it easier
to join multiple search tables together.
For example, when multiple log messages occur together in the
same sequence.
You can create search tables for each line and then join them
to query over the whole group of messages. - Added a
:write-debug-log-tocommand that can be used to write
lnav's internal debug log to a file. - Added a
:clear-adjusted-log-timecommand to clear the time offset
set by the:adjust-log-timecommand. - Added a
measure_with_unitsSQLite collation function that can
compare numbers with unit suffixes, like "10KB" or "1.2ms".
The:create-search-tablecommand will also use this collation
function for capture patterns that are likely to capture a number
with a unit. - Log messages now have permalinks that can be used to reference them
from other locations.
The permalink for a message is shown in the parser details overlay
(activated by pressingp).
Selecting the "Permalink:" line in the overlay and then pressing
cwill copy the link to your clipboard.
The link is also available in thelog_line_linkcolumn of the
log tables.
These permalinks can be used with the:gotocommand to move to
the log message.
They can also be used in log message comments as targets for
Markdown links, which can be clicked to jump to the message. - The
CTRL+Oshortcut is now bound to the:prev-location
command, so you can jump back to a previous location. - Render task marks in markdown.
- The demultiplexing feature has been extended to support JSON-lines
input files.
For example, an
export of search results from Graylog
can automatically be split into separate streams based on the
sourceproperty. - Added an
lnav_focused_msgSQL VIEW that returns a single row
with the columns from theall_logstable for the currently
focused log message. AnUPDATEof the mutable columns will
update the corresponding row in theall_logstable. - Add timestamp format
%9for nanoseconds from the epoch. - Added the "modus-operandi" light-colored theme.
- The colors used for highlights and identifiers are now checked
for high contrast against the current theme's background color. - Added the "pino_log" format for the Pino Node.js logger.
- Added the "zap_console_log" format for the Go Zap logger.
- Added the "spdlog_log" format for the C++ spdlog logger.
Bug Fixes:
- Should start up in tmux and line drawing should show up now as well.
- The default terminal colors will now be used in the default theme.
So, a light background with a dark foreground will be respected. - Improved performance of searches with lots of hits.
- Improved performance for compressed files.
- Improved performance for the timeline view.
- Copying a column with a text value in the DB overlay view.
- Generic logs read from stdin or exec'd were not working properly.
- The
:export-session-tocommand will now include:opencommands
for log files that were piped in to lnav or executed with the:sh
command. - The
:set-file-timezonecommand was not working correctly in some
cases. - The location of views should be restored from the session when filters
are active. - Themes have been cleaned up a bit to fix issues with contrast.
v0.13.1-beta4
lnav v0.13.0
Interface changes:
- The prompt is now a custom implementation instead of readline.
Some highlights:-
In the DB prompt: pressing
CTRL+Lwill reformat the query and
switch the prompt to multi-line mode; error locations will be
highlighted. -
In multi-line mode, you can click and drag the status bar above
the prompt to resize the prompt. -
Pressing
CTRL+Oin the prompt will transfer the prompt to
contents to Visual Studio Code or the default text editor on
macOS.
You can then edit the file and run it from the|prompt with:|saved-prompt -
When editing a regular expression, like the search prompt or
for a filter, if the current pattern matches a line in the
view, the following word will be suggested.
For example, if the view has the text "foo bar baz" and you
type "foo ", the prompt will suggest "bar" and you can then
pressTABto complete. -
In the history listing, an icon indicates if the command or
query succeeded or failed. -
Mouse input works as expected: left-click positions the cursor
in a given location, and a click-drag will select text.
A right-click will copy the selected text to the system
clipboard.
-
- Pressing
F1in the prompt will show the help text for the
prompt itself.
The size of the prompt panel is expanded for readability. - When reading from stdin, the files used to store the content
will be rotated when they cross the/tuning/piper/max-size
threshold.
Previously, the name of the file in the TEXT view would just
be "stdin", but now it includes the rotation number. - The LOG and TEXT views will now display a message if they
contain no content to make it clear to the user that they
need to switch views or:opena file. - The HIST view now supports bookmarks, so you can use the usual
hotkeys to move to the next/previous time segment with
errors/warnings/marks. - In table cells, control characters are replaced with Unicode
symbols and highlighted with the 'hidden' style from the theme. - The
Shift+Bhotkey will now jump to the start of a log
message in the LOG view if the currently focused line is in the
middle of a multi-line log message. - When the
:hide-unmarked-linescommand is used in the LOG
view, if any line in a message is marked, the entire message
will be shown.
Features:
- The
:commentcommand will now switch the prompt to multi-line
mode and does syntax highlighting for Markdown directives in the
comment.
The rendered Markdown will also now be shown in the preview panel. - lnav code blocks in Markdown content now have a play button (▶)
next to commands that you can click on to run the command. - Scrolling right in the LOG view when at the start of a message
can hide the timestamp/level fields in the message and insert a
shorter timestamp column on the left side.
The column should take less space than the existing field and
aligns all timestamps across all log formats.
This feature is gated by the/ui/views/log/time-column
setting, with the following values:disabled: scrolling right works as normal and does not insert
the time column.enabled: scrolling right enables the time column.default: the time column is enabled and the default on startup.
- Added a
fuzzy_match()SQL function that compares a pattern to
a string and returns a score.
The algorithm used is the same as in lnav itself. - Added a
match_rowidcolumn to search tables to make it easier
to join multiple search tables together.
For example, when multiple log messages occur together in the
same sequence.
You can create search tables for each line and then join them
to query over the whole group of messages. - Added a
:write-debug-log-tocommand that can be used to write
lnav's internal debug log to a file. - Added a
:clear-adjusted-log-timecommand to clear the time offset
set by the:adjust-log-timecommand. - Added a
measure_with_unitsSQLite collation function that can
compare numbers with unit suffixes, like "10KB" or "1.2ms".
The:create-search-tablecommand will also use this collation
function for capture patterns that are likely to capture a number
with a unit. - Log messages now have permalinks that can be used to reference them
from other locations.
The permalink for a message is shown in the parser details overlay
(activated by pressingp).
Selecting the "Permalink:" line in the overlay and then pressing
cwill copy the link to your clipboard.
The link is also available in thelog_line_linkcolumn of the
log tables.
These permalinks can be used with the:gotocommand to move to
the log message.
They can also be used in log message comments as targets for
Markdown links, which can be clicked to jump to the message. - The
CTRL+Oshortcut is now bound to the:prev-location
command, so you can jump back to a previous location. - Render task marks in markdown.
- The demultiplexing feature has been extended to support JSON-lines
input files.
For example, an
export of search results from Graylog
can automatically be split into separate streams based on the
sourceproperty. - Added an
lnav_focused_msgSQL VIEW that returns a single row
with the columns from theall_logstable for the currently
focused log message. AnUPDATEof the mutable columns will
update the corresponding row in theall_logstable. - Add timestamp format
%9for nanoseconds from the epoch. - Added the "modus-operandi" light-colored theme.
- The colors used for highlights and identifiers are now checked
for high contrast against the current theme's background color. - Added the "pino_log" format for the Pino Node.js logger.
- Added the "zap_console_log" format for the Go Zap logger.
- Added the "spdlog_log" format for the C++ spdlog logger.
Bug Fixes:
- Should start up in tmux and line drawing should show up now as well.
- The default terminal colors will now be used in the default theme.
So, a light background with a dark foreground will be respected. - Improved performance of searches with lots of hits.
- Improved performance for compressed files.
- Improved performance for the timeline view.
- Copying a column with a text value in the DB overlay view.
- Generic logs read from stdin or exec'd were not working properly.
- The
:export-session-tocommand will now include:opencommands
for log files that were piped in to lnav or executed with the:sh
command. - The
:set-file-timezonecommand was not working correctly in some
cases. - The location of views should be restored from the session when filters
are active. - Themes have been cleaned up a bit to fix issues with contrast.
v0.13.1-beta3
lnav v0.13.1
Features:
- Initial support for Windows. Configuration should be stored
in %APPDATA%. The binary is built using msys2. So, it
depends on msys-2.0.dll being in the same directory. No other
dependencies should be needed. - Removed dependency on ncurses during the build. The terminfo
files are still used during runtime, but fallback terminfo
files for common terminals are included in the binary. - Added the postgres_log format.
Interface changes:
- If all the log messages in the LOG view are hidden, a notice
will be displayed that describes the filters that are in
effect.
Bug Fixes:
- Fix a crash on startup for some environments.
- Fix a spurious screen flash on some prompts.
- Fix an issue with completion of script names.
v0.13.1-beta2
lnav v0.13.0
Interface changes:
- The prompt is now a custom implementation instead of readline.
Some highlights:-
In the DB prompt: pressing
CTRL+Lwill reformat the query and
switch the prompt to multi-line mode; error locations will be
highlighted. -
In multi-line mode, you can click and drag the status bar above
the prompt to resize the prompt. -
Pressing
CTRL+Oin the prompt will transfer the prompt to
contents to Visual Studio Code or the default text editor on
macOS.
You can then edit the file and run it from the|prompt with:|saved-prompt -
When editing a regular expression, like the search prompt or
for a filter, if the current pattern matches a line in the
view, the following word will be suggested.
For example, if the view has the text "foo bar baz" and you
type "foo ", the prompt will suggest "bar" and you can then
pressTABto complete. -
In the history listing, an icon indicates if the command or
query succeeded or failed. -
Mouse input works as expected: left-click positions the cursor
in a given location, and a click-drag will select text.
A right-click will copy the selected text to the system
clipboard.
-
- Pressing
F1in the prompt will show the help text for the
prompt itself.
The size of the prompt panel is expanded for readability. - When reading from stdin, the files used to store the content
will be rotated when they cross the/tuning/piper/max-size
threshold.
Previously, the name of the file in the TEXT view would just
be "stdin", but now it includes the rotation number. - The LOG and TEXT views will now display a message if they
contain no content to make it clear to the user that they
need to switch views or:opena file. - The HIST view now supports bookmarks, so you can use the usual
hotkeys to move to the next/previous time segment with
errors/warnings/marks. - In table cells, control characters are replaced with Unicode
symbols and highlighted with the 'hidden' style from the theme. - The
Shift+Bhotkey will now jump to the start of a log
message in the LOG view if the currently focused line is in the
middle of a multi-line log message. - When the
:hide-unmarked-linescommand is used in the LOG
view, if any line in a message is marked, the entire message
will be shown.
Features:
- The
:commentcommand will now switch the prompt to multi-line
mode and does syntax highlighting for Markdown directives in the
comment.
The rendered Markdown will also now be shown in the preview panel. - lnav code blocks in Markdown content now have a play button (▶)
next to commands that you can click on to run the command. - Scrolling right in the LOG view when at the start of a message
can hide the timestamp/level fields in the message and insert a
shorter timestamp column on the left side.
The column should take less space than the existing field and
aligns all timestamps across all log formats.
This feature is gated by the/ui/views/log/time-column
setting, with the following values:disabled: scrolling right works as normal and does not insert
the time column.enabled: scrolling right enables the time column.default: the time column is enabled and the default on startup.
- Added a
fuzzy_match()SQL function that compares a pattern to
a string and returns a score.
The algorithm used is the same as in lnav itself. - Added a
match_rowidcolumn to search tables to make it easier
to join multiple search tables together.
For example, when multiple log messages occur together in the
same sequence.
You can create search tables for each line and then join them
to query over the whole group of messages. - Added a
:write-debug-log-tocommand that can be used to write
lnav's internal debug log to a file. - Added a
:clear-adjusted-log-timecommand to clear the time offset
set by the:adjust-log-timecommand. - Added a
measure_with_unitsSQLite collation function that can
compare numbers with unit suffixes, like "10KB" or "1.2ms".
The:create-search-tablecommand will also use this collation
function for capture patterns that are likely to capture a number
with a unit. - Log messages now have permalinks that can be used to reference them
from other locations.
The permalink for a message is shown in the parser details overlay
(activated by pressingp).
Selecting the "Permalink:" line in the overlay and then pressing
cwill copy the link to your clipboard.
The link is also available in thelog_line_linkcolumn of the
log tables.
These permalinks can be used with the:gotocommand to move to
the log message.
They can also be used in log message comments as targets for
Markdown links, which can be clicked to jump to the message. - The
CTRL+Oshortcut is now bound to the:prev-location
command, so you can jump back to a previous location. - Render task marks in markdown.
- The demultiplexing feature has been extended to support JSON-lines
input files.
For example, an
export of search results from Graylog
can automatically be split into separate streams based on the
sourceproperty. - Added an
lnav_focused_msgSQL VIEW that returns a single row
with the columns from theall_logstable for the currently
focused log message. AnUPDATEof the mutable columns will
update the corresponding row in theall_logstable. - Add timestamp format
%9for nanoseconds from the epoch. - Added the "modus-operandi" light-colored theme.
- The colors used for highlights and identifiers are now checked
for high contrast against the current theme's background color. - Added the "pino_log" format for the Pino Node.js logger.
- Added the "zap_console_log" format for the Go Zap logger.
- Added the "spdlog_log" format for the C++ spdlog logger.
Bug Fixes:
- Should start up in tmux and line drawing should show up now as well.
- The default terminal colors will now be used in the default theme.
So, a light background with a dark foreground will be respected. - Improved performance of searches with lots of hits.
- Improved performance for compressed files.
- Improved performance for the timeline view.
- Copying a column with a text value in the DB overlay view.
- Generic logs read from stdin or exec'd were not working properly.
- The
:export-session-tocommand will now include:opencommands
for log files that were piped in to lnav or executed with the:sh
command. - The
:set-file-timezonecommand was not working correctly in some
cases. - The location of views should be restored from the session when filters
are active. - Themes have been cleaned up a bit to fix issues with contrast.