Jaslog

Rust Crates.io

A log reader for structured logs that handles non-json lines, displays beautifully colored logs and can filter based on the fields of the json.

It will work especially well with certain specific JSON structures (see "Supported formats").

Install

  1. Download the binary from the latest release
  2. Put it in the folder that's part of your PATH
  3. Make it executable (chmod +x)

Usage

Basic usage:

sh $ jaslog file.json.log

Or using stdin:

sh $ cat file.json.log | jaslog

You can filter. Syntax is:

sh $ jaslog file.json.log -f level=info

You can also can also ask to read only the first n lines:

sh $ jaslog file.json.log -f level=info -n 50

Explicitly supported formats

Pull requests to support new formats are welcome of course !

Elixir logs:

json { "app": "ecto_sql", "level": "info", "message": "create index etc...", "metadata": {}, "module": "Elixir.Ecto.Migration.Runner", "pid": "#PID<0.280.0>", "timestamp": "2019-12-18T10:55:50.000393" }

Logstash's jsonevent-layout logs:

json { "@timestamp": "2020-01-13T12:34:01.740Z", "source_host": "04fc4fd30dc3", "file": "Dispatcher.java", "method": "tryAcceptLeadershipAndRunJobs", "level": "DEBUG", "line_number": "927", "thread_name": "flink-akka.actor.default-dispatcher-3", "@version": 1, "logger_name": "org.apache.flink.runtime.dispatcher.StandaloneDispatcher", "message": "Dispatcher akka.tcp://flink@04fc4fd30dc3:6123/user/dispatcher accepted leadership with fencing token 00000000000000000000000000000000. Start recovered jobs.", "class": "org.apache.flink.runtime.dispatcher.Dispatcher", "mdc": {} }

Log4J's JSONLayout logs:

json { "thread": "main", "level": "INFO", "loggerName": "org.apache.flink.runtime.dispatcher.DispatcherRestEndpoint", "message": "Starting rest endpoint.", "endOfBatch": false, "loggerFqcn": "org.apache.logging.slf4j.Log4jLogger", "instant": { "epochSecond": 1622724607, "nanoOfSecond": 420000000 }, "threadId": 1, "threadPriority": 5 }

Releasing