mirror of https://github.com/tstack/lnav
[docs] start to migrate lnav.org
parent
4b6fb5ff18
commit
1d6ac461ba
@ -0,0 +1,5 @@
|
||||
_site
|
||||
.sass-cache
|
||||
.jekyll-cache
|
||||
.jekyll-metadata
|
||||
vendor
|
@ -0,0 +1,33 @@
|
||||
---
|
||||
layout: page
|
||||
title: Downloads
|
||||
permalink: /downloads
|
||||
---
|
||||
|
||||
The latest version is [**v0.9.0**](https://github.com/tstack/lnav/releases/latest).
|
||||
|
||||
## Linux
|
||||
|
||||
Install from the [Snap Store](https://snapcraft.io/lnav):
|
||||
|
||||
```shell
|
||||
% sudo snap install lnav
|
||||
```
|
||||
|
||||
## MacOS
|
||||
|
||||
Install using [Homebrew](https://formulae.brew.sh/formula/lnav):
|
||||
|
||||
```shell
|
||||
% brew install lnav
|
||||
```
|
||||
|
||||
## Source
|
||||
|
||||
```shell
|
||||
% tar xvfz
|
||||
% cd lnav-
|
||||
% ./configure
|
||||
% make
|
||||
% make install
|
||||
```
|
@ -0,0 +1,4 @@
|
||||
---
|
||||
layout: page
|
||||
title: Features
|
||||
---
|
@ -0,0 +1,6 @@
|
||||
---
|
||||
title: Docs
|
||||
permalink: /docs
|
||||
redirect_to:
|
||||
- https://docs.lnav.org
|
||||
---
|
@ -0,0 +1,25 @@
|
||||
---
|
||||
permalink: /404.html
|
||||
layout: default
|
||||
---
|
||||
|
||||
<style type="text/css" media="screen">
|
||||
.container {
|
||||
margin: 10px auto;
|
||||
max-width: 600px;
|
||||
text-align: center;
|
||||
}
|
||||
h1 {
|
||||
margin: 30px 0;
|
||||
font-size: 4em;
|
||||
line-height: 1;
|
||||
letter-spacing: -1px;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div class="container">
|
||||
<h1>404</h1>
|
||||
|
||||
<p><strong>Page not found :(</strong></p>
|
||||
<p>The requested page could not be found.</p>
|
||||
</div>
|
@ -0,0 +1,31 @@
|
||||
source "https://rubygems.org"
|
||||
# Hello! This is where you manage which Jekyll version is used to run.
|
||||
# When you want to use a different version, change it below, save the
|
||||
# file and run `bundle install`. Run Jekyll with `bundle exec`, like so:
|
||||
#
|
||||
# bundle exec jekyll serve
|
||||
#
|
||||
# This will help ensure the proper Jekyll version is running.
|
||||
# Happy Jekylling!
|
||||
gem "jekyll", "~> 4.2.0"
|
||||
# This is the default theme for new Jekyll sites. You may change this to anything you like.
|
||||
gem "minima", "~> 2.5"
|
||||
# If you want to use GitHub Pages, remove the "gem "jekyll"" above and
|
||||
# uncomment the line below. To upgrade, run `bundle update github-pages`.
|
||||
# gem "github-pages", group: :jekyll_plugins
|
||||
# If you have any plugins, put them here!
|
||||
group :jekyll_plugins do
|
||||
gem "jekyll-feed", "~> 0.12"
|
||||
gem "jekyll-redirect-from", "~> 0.16.0"
|
||||
end
|
||||
|
||||
# Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem
|
||||
# and associated library.
|
||||
platforms :mingw, :x64_mingw, :mswin, :jruby do
|
||||
gem "tzinfo", "~> 1.2"
|
||||
gem "tzinfo-data"
|
||||
end
|
||||
|
||||
# Performance-booster for watching directories on Windows
|
||||
gem "wdm", "~> 0.1.1", :platforms => [:mingw, :x64_mingw, :mswin]
|
||||
|
@ -0,0 +1,83 @@
|
||||
GEM
|
||||
remote: https://rubygems.org/
|
||||
specs:
|
||||
addressable (2.7.0)
|
||||
public_suffix (>= 2.0.2, < 5.0)
|
||||
colorator (1.1.0)
|
||||
concurrent-ruby (1.1.9)
|
||||
em-websocket (0.5.2)
|
||||
eventmachine (>= 0.12.9)
|
||||
http_parser.rb (~> 0.6.0)
|
||||
eventmachine (1.2.7)
|
||||
ffi (1.15.1)
|
||||
forwardable-extended (2.6.0)
|
||||
http_parser.rb (0.6.0)
|
||||
i18n (1.8.10)
|
||||
concurrent-ruby (~> 1.0)
|
||||
jekyll (4.2.0)
|
||||
addressable (~> 2.4)
|
||||
colorator (~> 1.0)
|
||||
em-websocket (~> 0.5)
|
||||
i18n (~> 1.0)
|
||||
jekyll-sass-converter (~> 2.0)
|
||||
jekyll-watch (~> 2.0)
|
||||
kramdown (~> 2.3)
|
||||
kramdown-parser-gfm (~> 1.0)
|
||||
liquid (~> 4.0)
|
||||
mercenary (~> 0.4.0)
|
||||
pathutil (~> 0.9)
|
||||
rouge (~> 3.0)
|
||||
safe_yaml (~> 1.0)
|
||||
terminal-table (~> 2.0)
|
||||
jekyll-feed (0.15.1)
|
||||
jekyll (>= 3.7, < 5.0)
|
||||
jekyll-redirect-from (0.16.0)
|
||||
jekyll (>= 3.3, < 5.0)
|
||||
jekyll-sass-converter (2.1.0)
|
||||
sassc (> 2.0.1, < 3.0)
|
||||
jekyll-seo-tag (2.7.1)
|
||||
jekyll (>= 3.8, < 5.0)
|
||||
jekyll-watch (2.2.1)
|
||||
listen (~> 3.0)
|
||||
kramdown (2.3.1)
|
||||
rexml
|
||||
kramdown-parser-gfm (1.1.0)
|
||||
kramdown (~> 2.0)
|
||||
liquid (4.0.3)
|
||||
listen (3.5.1)
|
||||
rb-fsevent (~> 0.10, >= 0.10.3)
|
||||
rb-inotify (~> 0.9, >= 0.9.10)
|
||||
mercenary (0.4.0)
|
||||
minima (2.5.1)
|
||||
jekyll (>= 3.5, < 5.0)
|
||||
jekyll-feed (~> 0.9)
|
||||
jekyll-seo-tag (~> 2.1)
|
||||
pathutil (0.16.2)
|
||||
forwardable-extended (~> 2.6)
|
||||
public_suffix (4.0.6)
|
||||
rb-fsevent (0.11.0)
|
||||
rb-inotify (0.10.1)
|
||||
ffi (~> 1.0)
|
||||
rexml (3.2.5)
|
||||
rouge (3.26.0)
|
||||
safe_yaml (1.0.5)
|
||||
sassc (2.4.0)
|
||||
ffi (~> 1.9)
|
||||
terminal-table (2.0.0)
|
||||
unicode-display_width (~> 1.1, >= 1.1.1)
|
||||
unicode-display_width (1.7.0)
|
||||
|
||||
PLATFORMS
|
||||
universal-darwin-20
|
||||
|
||||
DEPENDENCIES
|
||||
jekyll (~> 4.2.0)
|
||||
jekyll-feed (~> 0.12)
|
||||
jekyll-redirect-from (~> 0.16.0)
|
||||
minima (~> 2.5)
|
||||
tzinfo (~> 1.2)
|
||||
tzinfo-data
|
||||
wdm (~> 0.1.1)
|
||||
|
||||
BUNDLED WITH
|
||||
2.2.20
|
@ -0,0 +1,58 @@
|
||||
# Welcome to Jekyll!
|
||||
#
|
||||
# This config file is meant for settings that affect your whole blog, values
|
||||
# which you are expected to set up once and rarely edit after that. If you find
|
||||
# yourself editing this file very often, consider using Jekyll's data files
|
||||
# feature for the data you need to update frequently.
|
||||
#
|
||||
# For technical reasons, this file is *NOT* reloaded automatically when you use
|
||||
# 'bundle exec jekyll serve'. If you change this file, please restart the server process.
|
||||
#
|
||||
# If you need help with YAML syntax, here are some quick references for you:
|
||||
# https://learn-the-web.algonquindesign.ca/topics/markdown-yaml-cheat-sheet/#yaml
|
||||
# https://learnxinyminutes.com/docs/yaml/
|
||||
#
|
||||
# Site settings
|
||||
# These are used to personalize your new site. If you look in the HTML files,
|
||||
# you will see them accessed via {{ site.title }}, {{ site.email }}, and so on.
|
||||
# You can create any custom variable you would like, and they will be accessible
|
||||
# in the templates via {{ site.myvariable }}.
|
||||
|
||||
title: The Logfile Navigator
|
||||
email: support@lnav.org
|
||||
description: >- # this means to ignore newlines until "baseurl:"
|
||||
The Logfile Navigator, lnav for short, is an advanced log file viewer
|
||||
for the small-scale.
|
||||
baseurl: "" # the subpath of your site, e.g. /blog
|
||||
url: "http://lnav.org" # the base hostname & protocol for your site, e.g. http://example.com
|
||||
twitter_username: lnavapp
|
||||
# github_username: tstack
|
||||
|
||||
# Build settings
|
||||
theme: minima
|
||||
plugins:
|
||||
- jekyll-feed
|
||||
- jekyll-redirect-from
|
||||
|
||||
exclude:
|
||||
- source
|
||||
|
||||
# Exclude from processing.
|
||||
# The following items will not be processed, by default.
|
||||
# Any item listed under the `exclude:` key here will be automatically added to
|
||||
# the internal "default list".
|
||||
#
|
||||
# Excluded items can be processed by explicitly listing the directories or
|
||||
# their entries' file path in the `include:` list.
|
||||
#
|
||||
# exclude:
|
||||
# - .sass-cache/
|
||||
# - .jekyll-cache/
|
||||
# - gemfiles/
|
||||
# - Gemfile
|
||||
# - Gemfile.lock
|
||||
# - node_modules/
|
||||
# - vendor/bundle/
|
||||
# - vendor/cache/
|
||||
# - vendor/gems/
|
||||
# - vendor/ruby/
|
@ -0,0 +1,44 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="{{ page.lang | default: site.lang | default: "en" }}">
|
||||
|
||||
{%- include head.html -%}
|
||||
|
||||
<style>
|
||||
main {
|
||||
margin: 0 50px;
|
||||
}
|
||||
|
||||
dl {
|
||||
display: grid;
|
||||
grid-template-rows: auto auto;
|
||||
grid-auto-flow: column;
|
||||
width: 100%;
|
||||
}
|
||||
dl dt {
|
||||
font-weight: normal;
|
||||
font-size: x-large;
|
||||
text-align: center;
|
||||
border-bottom: 1px solid #ddd;
|
||||
margin: 20px 30px;
|
||||
}
|
||||
dl dd {
|
||||
margin: 0 30px 20px 30px;
|
||||
min-height: 3em;
|
||||
color: #828282;
|
||||
font-size: medium;
|
||||
}
|
||||
</style>
|
||||
|
||||
<body>
|
||||
|
||||
{%- include header.html -%}
|
||||
|
||||
<main class="page-content" aria-label="Content">
|
||||
{{ content }}
|
||||
</main>
|
||||
|
||||
{%- include footer.html -%}
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
@ -0,0 +1,55 @@
|
||||
---
|
||||
layout: post
|
||||
title: "Support for JSON-encoded logs in v0.6.1"
|
||||
date: 2013-09-10 00:00:00
|
||||
---
|
||||
|
||||
Making logs easily digestible by machines is becoming a concern as tools like
|
||||
elasticsearch become more popular. One of the popular strategies is to encode
|
||||
the whole log message in JSON and then write that as a single line to a file.
|
||||
For example:
|
||||
|
||||
```json
|
||||
{"time": "2013-09-04T23:55:09.274041Z", "level" : "INFO", "body" : "Hello, World!" }
|
||||
{"time": "2013-09-04T23:56:00.285224Z", "level" : "ERROR", "body" : "Something terrible has happened!", "tb": " foo.c:12\n bar.y:33" }
|
||||
```
|
||||
|
||||
Unfortunately, what is good for a machine is not so great for a human. To try to
|
||||
improve the situation, the latest release of lnav includes support for parsing
|
||||
JSON log messages and transforming them on-the-fly. The display format is
|
||||
specified in a log format configuration and can specify which fields should be
|
||||
displayed on the main message line. Any unused fields that are found in the
|
||||
message will be displayed below the main field so you don't miss anything.
|
||||
|
||||
The above log lines can be transformed using the following format configuration:
|
||||
|
||||
```json
|
||||
{
|
||||
"json_ex_log": {
|
||||
"title": "Example JSON Log",
|
||||
"description": "An example log format configuration for JSON logs",
|
||||
"json": true,
|
||||
"file-pattern": "test-log\\.json.*",
|
||||
"level-field": "level",
|
||||
"line-format": [
|
||||
{
|
||||
"field": "time"
|
||||
},
|
||||
" ",
|
||||
{
|
||||
"field": "body"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
After copying this config to `~/.lnav/formats/test/format.json`, the log messages
|
||||
will look like this when viewed in lnav:
|
||||
|
||||
```
|
||||
2013-09-04T23:55:09.274041Z Hello, World!
|
||||
2013-09-04T23:56:00.285224Z Something terrible has happened!
|
||||
tb: foo.c:12
|
||||
tb: bar.y:33
|
||||
```
|
@ -0,0 +1,11 @@
|
||||
---
|
||||
layout: post
|
||||
title: "Four years on GitHub"
|
||||
date: 2013-09-13 00:00:00
|
||||
---
|
||||
|
||||
The [first commit](https://github.com/tstack/lnav/commit/b4ec432515e95e86ec9d711833b8cb34d0912546)
|
||||
to the [lnav repository](https://github.com/tstack/lnav) was four years ago
|
||||
today! I started working on lnav a couple of years before that, but this was
|
||||
its first public appearance. I still use it every day and plan to keep things
|
||||
going for years to come.
|
@ -0,0 +1,8 @@
|
||||
---
|
||||
layout: post
|
||||
title: "Mini review of lnav in Linux Magazine"
|
||||
date: 2013-10-05 00:00:00
|
||||
---
|
||||
|
||||
The [October issue of Linux Magazine](http://www.linux-magazine.com/Issues/2013/155/Tool-Tips)
|
||||
has a nice review of lnav v0.5.0, the author gave it four out of five stars!
|
@ -0,0 +1,22 @@
|
||||
---
|
||||
layout: post
|
||||
title: "Competing with 'tail -f'"
|
||||
date: 2013-09-10 00:00:00
|
||||
---
|
||||
|
||||
Probably the toughest competition for lnav is the standard Unix utilities like
|
||||
tail, grep, less, and emacs/vim. It can be hard trying to convince people that
|
||||
these built-in commands that they've used for forever can be improved upon. The
|
||||
advanced features of lnav might even work against it since folks are expecting
|
||||
to have to learn a bunch of stuff to see any benefits.
|
||||
|
||||
The reality is that there are quite a few "passive" features in lnav that can
|
||||
provide value with no effort required by the user. For example, lnav can easily
|
||||
replace 'tail -f', it's even shorter to type! Beyond the basic task of
|
||||
displaying new lines appended to a log file, you also get to see log messages
|
||||
from multiple files interleaved, the ability to scroll backwards, syntax
|
||||
highlighting, live searching, and so on. These basic features do not have the
|
||||
same "wow" factor as executing a SQL query over data automatically extracted
|
||||
from a log file, but they're the features that get used 90% of the time.
|
||||
|
||||
Anyways, I think I'm gaining a new appreciation for marketing/sales...
|
@ -0,0 +1,9 @@
|
||||
---
|
||||
layout: post
|
||||
title: "Mini-review of lnav in Linux User Magazine"
|
||||
date: 2013-09-10 00:00:00
|
||||
---
|
||||
|
||||
The german magazine, [Linux User](http://www.linux-user.de/), has a
|
||||
mini-review of lnav v0.6.0 in their
|
||||
[November issue](http://www.linux-user.de/Downloads/LUCE/2013/lu-ce_2013-11.pdf)!
|
@ -0,0 +1,20 @@
|
||||
---
|
||||
layout: post
|
||||
title: "Changes To The Scrollbar"
|
||||
date: 2014-02-22 00:00:00
|
||||
---
|
||||
|
||||
I've made some changes to the scrollbar that is shown on the right side of the
|
||||
display based on some feedback from users. The scroll area now has a single
|
||||
vertical line extending from the top to the bottom. Previously, this area would
|
||||
show log message characters and it wasn't very clear that the scroll bar
|
||||
existed. The line is colored based whether there are errors or warnings in that
|
||||
part of the log. The coloring should make it easier to see the distribution of
|
||||
errors across the whole log. Similarly, there are notches added to the left and
|
||||
right side of the line to show search hits and bookmarks, respectively. See the
|
||||
following screenshot to get an idea of what it looks like:
|
||||
|
||||
![Screenshot of the redesigned scrollbar](/assets/images/scrollbar-change-2.png)
|
||||
|
||||
These changes are currently only in the latest code from git. I'll be playing
|
||||
with things a bit more before making a release.
|
@ -0,0 +1,38 @@
|
||||
---
|
||||
layout: post
|
||||
title: "Pretty-print view in v0.7.3"
|
||||
date: 2015-04-11 00:00:00
|
||||
---
|
||||
|
||||
I wanted to call out the pretty-print feature in the latest release of lnav.
|
||||
This idea came from a coworker of Suresh who was having a hard time trying to
|
||||
read some unformatted XML in a log. They wanted the XML pretty-printed and were
|
||||
hoping that could be done by just piping the message to xmlpp or the like. So,
|
||||
first we implemented the 'pipe-to' and 'pipe-line-to' commands that will let you
|
||||
pipe log messages to a command and then display the result inside of lnav. That
|
||||
worked well enough, but pretty-printing is such a frequent operation that having
|
||||
to execute a command was kind of a pain. It would also be nice if it worked for
|
||||
a variety of text, like JSON or Python data. The solution we came up with was to
|
||||
leverage the existing code for parsing log messages to create a simple
|
||||
pretty-printer that should work for most data formats. Another benefit is that
|
||||
the log message does not have to be well-formed for the printer to work, any
|
||||
leading or trailing garbage shouldn't confuse things.
|
||||
|
||||
As an example, here is a screenshot of the log message with the unformatted XML
|
||||
text with word-wrapping turned on:
|
||||
|
||||
![Screenshot of raw XML](/assets/images/lnav-before-pretty.png)
|
||||
|
||||
That's not very easy to read and it's hard to figure out the structure of the
|
||||
message. Now, here is that same message after pressing SHIFT+P to switch to the
|
||||
pretty-print view of lnav:
|
||||
|
||||
![Screenshot of pretty-printed XML](/assets/images/lnav-after-pretty.png)
|
||||
|
||||
The XML text is indented nicely and the usual syntax highlighting is applied.
|
||||
Also notice that lnav will automatically try to lookup the DNS name for IP
|
||||
addresses. Overall, I think it's a major improvement over the raw view.
|
||||
|
||||
This is a pretty simple feature but I have found it quite useful in the couple
|
||||
weeks that it has been implemented. It's so useful that I'm kicking myself for
|
||||
not having thought of it before.
|
@ -0,0 +1,10 @@
|
||||
---
|
||||
layout: post
|
||||
title: "lnav in print"
|
||||
date: 2016-03-20 00:00:00
|
||||
---
|
||||
|
||||
A [review of lnav](https://archive.org/details/Linux_User_Developer_162_2016_UK/page/n87/mode/2up)
|
||||
is in Linux User & Developer magazine issue 162:
|
||||
|
||||
![Picture of lnav story in the magazine](/assets/images/linux-user-and-dev-mag.jpeg)
|
@ -0,0 +1,9 @@
|
||||
---
|
||||
layout: post
|
||||
title: "Tutorial for lnav in Linux Magazine"
|
||||
date: 2018-04-05 00:00:00
|
||||
---
|
||||
|
||||
Looks like there was an in-depth
|
||||
[tutorial on lnav in Linux Magazine](http://www.linux-magazine.com/Issues/2017/196/Tutorials-lnav).
|
||||
Unfortunately, I didn't notice until now and missed out on a hardcopy.
|
Binary file not shown.
After Width: | Height: | Size: 373 KiB |
Binary file not shown.
After Width: | Height: | Size: 158 KiB |
Binary file not shown.
After Width: | Height: | Size: 183 KiB |
Binary file not shown.
After Width: | Height: | Size: 327 KiB |
Binary file not shown.
After Width: | Height: | Size: 143 KiB |
@ -0,0 +1,5 @@
|
||||
---
|
||||
title: Blog
|
||||
layout: home
|
||||
---
|
||||
|
@ -0,0 +1,36 @@
|
||||
---
|
||||
# Feel free to add content and custom Front Matter to this file.
|
||||
# To modify the layout, see https://jekyllrb.com/docs/themes/#overriding-theme-defaults
|
||||
|
||||
layout: top
|
||||
---
|
||||
|
||||
![Screenshot of lnav](/assets/images/lnav-front-page.png){: style="float: right"}
|
||||
|
||||
## An advanced log file viewer for the small-scale
|
||||
|
||||
Watch and analyze your log files from a terminal.
|
||||
|
||||
No server. No setup. Still featureful.
|
||||
|
||||
<dl>
|
||||
<dt>In Your Terminal</dt>
|
||||
<dd>
|
||||
Many logging tools, like Splunk, provide great features but are optimized for
|
||||
large-scale deployments. They require installing and configuring servers
|
||||
before they can be effectively used. There is still a need for a robust log
|
||||
file analyzer for the terminal.
|
||||
</dd>
|
||||
|
||||
<dt>Easy to Use</dt>
|
||||
<dd>
|
||||
Just point lnav to a directory and it will take care of the rest. File formats
|
||||
are automatically detected and compressed files are unpacked on the fly.
|
||||
</dd>
|
||||
|
||||
<dt>Improved Presentation</dt>
|
||||
<dd>
|
||||
Log files are a wealth of information, lnav can help highlight the parts that
|
||||
are important and filter out the noise.
|
||||
</dd>
|
||||
</dl>
|
Loading…
Reference in New Issue