Skip to main content

Convert structured JSON logs to human-readable output

Project description

jsonlog-cli

A human readable formatter for JSON logs.

It's built for use with jsonlog but will work well with any log format that uses line delimited JSON.

Example output

Usage

See jsonlog --help for all options.

Key-value mode

Pass a file as the only argument to jsonlog, or read from STDIN by default.

jsonlog kv docs/example.log
python docs/example.py | jsonlog kv
cat docs/example.log | jsonlog

Only show the timestamp and message fields:

jsonlog kv --key timestamp --key message docs/example.log

Configure the keys of multiline values you want to display (can be specified multiple times, and defaults to the traceback key.)

jsonlog kv --key timestamp --key message --multiline-key traceback docs/example.log

Configure the key to extract and use as the records level, controlling the colour each line is printed in (defaults to the level key).

jsonlog kv --level-key level --key timestamp --key message --multiline-key traceback docs/example.log

Template mode

Only show the timestamp and message fields:

jsonlog template --format "{timestamp} {message}" docs/example.log

Also show a multiline key when it's present:

jsonlog template --format "{timestamp} {message}" --multiline-key traceback docs/example.log

Configuration

Named "patterns" are supported as a way of collecting a set of options for jsonlog's key-value and template modes. If ~/.config/jsonlog/config.json exists, it will be loaded at startup. All fields should be optional.

The example configuration file below creates patterns named basic and comprehensive for the key-value and template modes. The patterns will each show the timestamp and message fields of incoming logs. The patterns named comprehensive override all fields, setting their their default values.

Creating a pattern named default will set the default options used if no pattern is specified. Command line options always override options from the application's default configuration, the configuration file and the selected pattern.

{
  "keyvalues": {
    "basic": {
      "priority_keys": ["timestamp", "message"]
    },
    "comprehensive": {
      "level_key": "level",
      "multiline_json": false,
      "multiline_keys": [],
      "priority_keys": [],
      "removed_keys": []
    }
  },
  "templates": {
    "basic": {
      "format": "{timestamp} {message}"
    },
    "comprehensive": {
      "level_key": "level",
      "multiline_json": false,
      "multiline_keys": [],
      "format": "{timestamp} {message}" 
    }
  }
}

The multiline_json option will parse incoming data using a buffer. This is rarely useful, but some applications (e.g. ElasticSearch) output JSON split across multiple lines. Incoming data will be buffered until the whole buffer can be parsed as JSON or a new line starts with {. Incoming lines that can be immediately parsed as JSON are not buffered (flushing the buffer first).

Debugging

The jsonlog CLI has some flags that are useful when debugging. The following will print internal logs as JSON to STDERR.

jsonlog --log-path=- --log-level=debug kv ...

Authors

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

jsonlog-cli-6.1.3.tar.gz (11.3 kB view details)

Uploaded Source

Built Distribution

jsonlog_cli-6.1.3-py3-none-any.whl (12.5 kB view details)

Uploaded Python 3

File details

Details for the file jsonlog-cli-6.1.3.tar.gz.

File metadata

  • Download URL: jsonlog-cli-6.1.3.tar.gz
  • Upload date:
  • Size: 11.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.0.5 CPython/3.8.2 Linux/5.4.0-40-generic

File hashes

Hashes for jsonlog-cli-6.1.3.tar.gz
Algorithm Hash digest
SHA256 8daa41acf6768c95d8a8e5b4cccb4366a13db8f1ce667902f801b017ef0684c9
MD5 cbdc23c1b6aa5f2b7f7c4d35759b049f
BLAKE2b-256 f8273c5c725ea7faa22e75cc4c3bfb7bd17f2a72d13a36ea04141c140d8f22a4

See more details on using hashes here.

File details

Details for the file jsonlog_cli-6.1.3-py3-none-any.whl.

File metadata

  • Download URL: jsonlog_cli-6.1.3-py3-none-any.whl
  • Upload date:
  • Size: 12.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.0.5 CPython/3.8.2 Linux/5.4.0-40-generic

File hashes

Hashes for jsonlog_cli-6.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 8bef7e03c722da77bab1c63b4758b13fe1c1d38cf2478df2f379f0f3c59cb04c
MD5 976797d6ac3411092b48d171b76cd231
BLAKE2b-256 6d6f81175348ad0af2044b5b028f9374c39f76949e7c38f399ab038d189f2fdf

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page