#log-viewer #json-log #logging #log-file #json-logging #log-line #buyan

bin+lib bunyan_view

A full-featured port of the Node Bunyan structured log file viewer

5 releases

0.3.3 Dec 27, 2022
0.3.2 Dec 27, 2022
0.3.0 Nov 29, 2022
0.2.1 Dec 16, 2021
0.2.0 Nov 30, 2021

#720 in Debugging

MPL-2.0 license

165KB
2K SLoC

Rust Crates.io Crates.io

Bunyan Viewer

Screenshot

This project is a rewrite of the node-bunyan bunyan format log viewer CLI tool fully reimplemented in Rust.

Bunyan Viewer aims to be a stand-alone replacement for the node bunyan tool such that it:

  • Does not require additional runtimes (such as nodejs)
  • Can handle large log files with ease
  • Processes each log line in a memory efficient manner

Divergences

We aim to provide output that is as close as possible to the node-bunyan viewer with a few intentional divergences.

Features

Bunyan Viewer supports the following features:

  • The same output modes as the node-bunyan viewer (-o, --output flag):
    • bunyan: 0 indented JSON, bunyan's native format
    • inspect: node.js util.inspect output
    • json: JSON output, 2-space indent
    • json-N: JSON output, N-space indent, e.g. "json-4"
    • long: (the default) pretty
    • short: like "long", but more concise
    • simple: level, followed by "-" and then the message`
  • Support for conditional matching (--condition flag)
  • Local time conversion (-L, --time-local flag)
  • Filtering by level (-l, --level flag)
  • Strict mode (--strict flag)
  • Optional colorization - with a few extra colors sprinkled in (--color flag)
  • Pager support (--pager flag)
  • Decompression of gzipped archives
  • Node bunyan CLI compatibility
  • Supports viewing large log files

Limitations

Bunyan Viewer does not yet support the following:

  • Runtime log snooping via DTrace (-p flag)

Installation

Install the Bunyan Viewer into your Cargo Crates enabled environment by installing the crate:

  cargo install bunyan_view

Usage

Directly viewing one or more bunyan log files:

  bunyan logs/logs-001.log logs/logs-002.log logs/big-log-003.log.gz

View logs via piped input:

  cat logs/logs-001.log | bunyan 

Alternatively:

  bunyan < logs/logs-001.log

For additional usage help:

  bunyan --help

Testing

When running the automated testing suite, be sure to enable the dumb_terminal feature so that colorization is disabled. You can do this by invoking cargo test as follows:

  cargo test --features dumb_terminal

Other Bunyan Projects

License

This project is licensed under the Mozilla Public License Version 2.0. See the LICENSE.txt file for more details.

Dependencies

~7–15MB
~213K SLoC