It is an interactive tool for viewing and analyzing complex structured json-log files.
Main features:
It uses antonmedv/fx for viewing JSON records and charmbracelet/bubbletea for organizing the terminal UI. The tool is inspired by the project json-log-viewer which is unfortunately outdated and deserted.
The application is designed to help in visualization, navigation, and analyzing of JSON-formatted log data in a user-friendly and interactive manner. It provides a structured and organized view of the JSON logs, making it easier to comprehend the hierarchical nature of the data. It uses collapsible/expandable tree structures, indentation, and color-coded syntax to represent the JSON objects and arrays. It is possible to search for specific keywords, phrases, or patterns within the JSON logs. So it helps to significantly simplify the process of working with JSON logs, making it more intuitive and efficient. It is easy to troubleshoot issues, monitor system performance, or gain a deeper understanding of the application's behavior by analyzing its log data in post-mortem.
jlv assets/example.log
jlv -config example.jlv.jsonc assets/example.log
jlv < assets/example.log
Common applications:
curl https://raw.githubusercontent.com/hedhyw/json-log-viewer/main/assets/example.log | jlv
jlv << EOF
{"time":"1970-01-01T00:00:00.00","level":"INFO","message": "day 1"}
{"time":"1970-01-02T00:00:00.00","level":"INFO","message": "day 2"}
EOF
kubectl logs pod/POD_NAME -f | jlv
docker logs -f 000000000000 2>&1 | jlv
Key | Action |
---|---|
Enter | Open/Close log |
F | Filter |
Ctrl+C | Exit |
F10 | Exit |
Esc | Back |
↑↓ | Navigation |
[↑] Click Up on the first row to reload the file.
brew install hedhyw/main/jlv
# jlv application.log
go install github.com/hedhyw/json-log-viewer/cmd/jlv@latest
# jlv application.log
Latest DEB and RPM packages are available on the releases page.
Download latest archive *.tar.gz
for your target platform from the releases page and extract it to /usr/local/bin/jlv
. Add this path to PATH
environment.
git clone git@github.com:hedhyw/json-log-viewer.git
cd json-log-viewer
make build
cp ./bin/jlv /usr/local/bin
chmod +x /usr/local/bin/jlv
# jlv application.log
The application will look for the config .jlv.jsonc
in the working directory or in the home directory:
$PWD/.jlv.jsonc
;$HOME/.jlv.jsonc
.It's also possible to define the path to the configuration using "-config" flag.
The Json path supports the described in yalp/jsonpath syntax.
Example configuration: example.jlv.jsonc.
JSON Log Viewer can handle a variety of datetime formats when parsing your logs.
time
This will return the exact value that was set in the JSON document.
numerictime
This is a "smart" parser. It can accept an integer, a float, or a string. If it is numeric (1234443
, 1234443.589
, "1234443"
, "1234443.589"
), based on the number of digits, it will parse as seconds, milliseconds, or microseconds. The output is a UTC-based RFC 3339 datetime.
If a string such as "2023-05-01T12:00:34Z"
or "---"
is used, the value will just be carried forward to your column.
If you find that the smart parsing is giving unwanted results or you need greater control over how a datetime is parsed, considered using one of the other time formats instead.
secondtime
This will attempt to parse the value as number of seconds and render as a UTC-based RFC 3339. Values accepted are integer, string, or float.
millitime
Similar to secondtime
, this will attempt to parse the value as number of milliseconds. Values accepted are integer, string, or float.
microtime
Similar to secondtime
and millistime
, this will attempt to parse the value as number of microseconds. Values accepted are integer, string, or float.
Alternatives:
Check open unassigned issues, write comments, ask questions, fork, and create a pull request.