In addition to the tables generated for each log format, lnav includes the following tables/views:
- environ
- lnav_events
- lnav_file
- lnav_user_notifications
- lnav_views
- lnav_views_echo
- lnav_view_stack
- lnav_view_filters
- lnav_view_filter_stats
- lnav_view_filters_and_stats
- all_logs
- http_status_codes
- regexp_capture(<string>, <regex>)
These extra tables provide useful information and can let you manipulate lnav's internal state. You can get a dump of the entire database schema by executing the '.schema' SQL command, like so:
;.schema
The environ table gives you access to the lnav process' environment variables. You can SELECT, INSERT, and UPDATE environment variables, like so:
;SELECT * FROM environ WHERE name = 'SHELL'
name value
SHELL /bin/tcsh
;UPDATE environ SET value = '/bin/sh' WHERE name = 'SHELL'
Environment variables can be used to store simple values or pass values from lnav's SQL environment to lnav's commands. For example, the "open" command will do variable substitution, so you can insert a variable named "FILENAME" and then open it in lnav by referencing it with "$FILENAME":
;INSERT INTO environ VALUES ('FILENAME', '/path/to/file')
:open $FILENAME
The lnav_events table allows you to react to events that occur while lnav is running using SQLite triggers. For example, when a file is opened, a row is inserted into the lnav_events
table that contains a timestamp and a JSON object with the event ID and the path of the file. The following columns are available in this table:
- ts
The timestamp of the event.
- content
A JSON object that contains the event information. See the
event_reference
for more information about the types of events that are available.
The lnav_file table allows you to examine and perform limited updates to the metadata for the files that are currently loaded into lnav. The following columns are available in this table:
- device
The device the file is stored on.
- inode
The inode for the file on the device.
- filepath
If this is a real file, it will be the absolute path. Otherwise, it is a symbolic name. If it is a symbolic name, it can be UPDATEd so that this file will be considered when saving and loading session information.
- format
The log file format for the file.
- lines
The number of lines in the file.
- time_offset
The millisecond offset for timestamps. This column can be UPDATEd to change the offset of timestamps in the file.
The lnav_user_notifications
table allows you to display a custom message in the top-right corner of the UI. For example, to display "Hello, World!", you can enter:
;REPLACE INTO lnav_user_notifications (message) VALUES ('Hello, World!')
There are additional columns to have finer control of what is displayed and when:
- id
The unique ID for the message, defaults to "org.lnav.user". This is the primary key for the table, so more than one type of message is not allowed.
- priority
The priority of the message. Higher priority messages will be displayed until they are cleared or are expired.
- created
The time the message was created.
- expiration
The time when the message should expire or NULL if it should not automatically expire.
- views
A JSON array of view names where the message is applicable or NULL if the message should be shown in all views.
- message
The message itself.
This table will most likely be used in combination with Events
and the lnav_views_echo table.
The lnav_views table allows you to SELECT and UPDATE information related to lnav's "views" (e.g. log, text, ...). The following columns are available in this table:
- name
The name of the view.
- top
The line number at the top of the view. This value can be UPDATEd to move the view to the given line.
- left
The left-most column number to display. This value can be UPDATEd to move the view left or right.
- height
The number of lines that are displayed on the screen.
- inner_height
The number of lines of content being displayed.
- top_time
The timestamp of the top line in the view or NULL if the view is not time-based. This value can be UPDATEd to move the view to the given time.
- paused
Indicates if the view is paused and will not load new data.
- search
The search string for this view. This value can be UPDATEd to initiate a text search in this view.
The lnav_views_echo
table is a real SQLite table that you can create TRIGGERs on in order to react to users moving around in a view.
Note
The table is periodically updated to reflect the current state of the views. The changes are not performed immediately after the user action.
The lnav_view_stack table allows you to SELECT and DELETE from the stack of lnav "views" (e.g. log, text, ...). The following columns are available in this table:
- name
The name of the view.
The lnav_view_filters table allows you to manipulate the filters in the lnav views. The following columns are available in this table:
- view_name
The name of the view the filter is applied to.
- filter_id
The filter identifier. This will be assigned on insertion.
- enabled
Indicates whether this filter is enabled or disabled.
- type
The type of filter, either 'in' or 'out'.
- pattern
The regular expression to filter on.
This table supports SELECT, INSERT, UPDATE, and DELETE on the table rows to read, create, update, and delete filters for the views.
The lnav_view_filter_stats table allows you to get information about how many lines matched a given filter. The following columns are available in this table:
- view_name
The name of the view.
- filter_id
The filter identifier.
- hits
The number of lines that matched this filter.
This table is read-only.
The lnav_view_filters_and_stats view joins the lnav_view_filters table with the lnav_view_filter_stats table into a single view for ease of use.
The all_logs table lets you query the format derived from the lnav log message parser that is used to automatically extract data, see data-ext
for more details.
The http_status_codes table is a handy reference that can be used to turn HTTP status codes into human-readable messages.
The regexp_capture() table-valued function applies the regular expression to the given string and returns detailed results for the captured portions of the string.