Skip to main content

Render Eliot logs as an ASCII tree

Project description

build coverage

Render Eliot logs as an ASCII tree.

This output:

$ eliot-tree eliot.log
f3a32bb3-ea6b-457c-aa99-08a3d0491ab4
└── app:soap:client:request/1 ⇒ started
    ├── dump: /home/user/dump_files/20150303/1425356936.28_Client_req.xml
    ├── soapAction: a_soap_action
    ├── timestamp: 2015-03-03 04:28:56.278875
    ├── uri: http://example.org/soap
    ├── app:soap:client:success/2/1 ⇒ started
    │   ├── timestamp: 2015-03-03 04:28:57.516579
    │   └── app:soap:client:success/2/2 ⇒ succeeded
    │       ├── dump: /home/user/dump_files/20150303/1425356937.52_Client_res.xml
    │       └── timestamp: 2015-03-03 04:28:57.517077
    └── app:soap:client:request/3 ⇒ succeeded
        ├── status: 200
        └── timestamp: 2015-03-03 04:28:57.517161

89a56df5-d808-4a7c-8526-e603aae2e2f2
└── app:soap:service:request/1 ⇒ started
    ├── dump: /home/user/dump_files/20150303/1425357068.03_Service_req.xml
    ├── soapAction: method
    ├── timestamp: 2015-03-03 04:31:08.032091
    ├── uri: /endpoints/soap/method
    ├── app:soap:service:success/2/1 ⇒ started
    │   ├── timestamp: 2015-03-03 04:31:11.512330
    │   └── app:soap:service:success/2/2 ⇒ succeeded
    │       ├── dump: /home/user/dump_files/20150303/1425357071.51_Service_res.xml
    │       └── timestamp: 2015-03-03 04:31:11.513453
    └── app:soap:service:request/3 ⇒ succeeded
        ├── status: 200
        └── timestamp: 2015-03-03 04:31:11.513992

was generated from:

{"dump": "/home/user/dump_files/20150303/1425356936.28_Client_req.xml", "timestamp": 1425356936.278875, "uri": "http://example.org/soap", "action_status": "started", "task_uuid": "f3a32bb3-ea6b-457c-aa99-08a3d0491ab4", "action_type": "app:soap:client:request", "soapAction": "a_soap_action", "task_level": [1]}
{"timestamp": 1425356937.516579, "task_uuid": "f3a32bb3-ea6b-457c-aa99-08a3d0491ab4", "action_type": "app:soap:client:success", "action_status": "started", "task_level": [2, 1]}
{"task_uuid": "f3a32bb3-ea6b-457c-aa99-08a3d0491ab4", "action_type": "app:soap:client:success", "dump": "/home/user/dump_files/20150303/1425356937.52_Client_res.xml", "timestamp": 1425356937.517077, "action_status": "succeeded", "task_level": [2, 2]}
{"status": 200, "task_uuid": "f3a32bb3-ea6b-457c-aa99-08a3d0491ab4", "task_level": [3], "action_type": "app:soap:client:request", "timestamp": 1425356937.517161, "action_status": "succeeded"}
{"dump": "/home/user/dump_files/20150303/1425357068.03_Service_req.xml", "timestamp": 1425357068.032091, "uri": "/endpoints/soap/method", "action_status": "started", "task_uuid": "89a56df5-d808-4a7c-8526-e603aae2e2f2", "action_type": "app:soap:service:request", "soapAction": "method", "task_level": [1]}
{"timestamp": 1425357071.51233, "task_uuid": "89a56df5-d808-4a7c-8526-e603aae2e2f2", "action_type": "app:soap:service:success", "action_status": "started", "task_level": [2, 1]}
{"task_uuid": "89a56df5-d808-4a7c-8526-e603aae2e2f2", "action_type": "app:soap:service:success", "dump": "/home/user/dump_files/20150303/1425357071.51_Service_res.xml", "timestamp": 1425357071.513453, "action_status": "succeeded", "task_level": [2, 2]}
{"status": 200, "task_uuid": "89a56df5-d808-4a7c-8526-e603aae2e2f2", "task_level": [3], "action_type": "app:soap:service:request", "timestamp": 1425357071.513992, "action_status": "succeeded"}

Streaming

It’s possible to pipe data into eliot-tree, from a tailed log for example, and have it rendered incrementally. There is a caveat though: Trees are only rendered once an end message—a success or failure status—for the tree’s root action appears in the data.

Usage from Python

import json, sys
from eliottree import tasks_from_iterable, render_tasks
# Or `codecs.getwriter('utf-8')(sys.stdout).write` on Python 2.
render_tasks(sys.stdout.write, tasks, colorize=True)

See help(render_tasks) and help(tasks_from_iterable) from a Python REPL for more information.

Usage from the command-line

$ eliot-tree
usage: eliot-tree [-h] [-u UUID] [-i KEY] [--raw]
                  [--color {always,auto,never}] [--no-colorize] [-l LENGTH]
                  [--select QUERY] [--start START] [--end END]
                  [FILE [FILE ...]]

Display an Eliot log as a tree of tasks.

positional arguments:
  FILE                  Files to process. Omit to read from stdin.

optional arguments:
  -h, --help            show this help message and exit
  -u UUID, --task-uuid UUID
                        Select a specific task by UUID
  -i KEY, --ignore-task-key KEY
                        Ignore a task key, use multiple times to ignore
                        multiple keys. Defaults to ignoring most Eliot
                        standard keys.
  --raw                 Do not format some task values (such as UTC
                        timestamps) as human-readable
  --color {always,auto,never}
                        Color the output. Defaults based on whether the output
                        is a TTY.
  -l LENGTH, --field-limit LENGTH
                        Limit the length of field values to LENGTH or a
                        newline, whichever comes first. Use a length of 0 to
                        output the complete value.
  --select QUERY        Select tasks to be displayed based on a jmespath
                        query, can be specified multiple times to mimic
                        logical AND. If any child task is selected the entire
                        top-level task is selected. See <http://jmespath.org/>
  --start START         Select tasks whose timestamp occurs after (or on) an
                        ISO8601 date.
  --end END             Select tasks whose timestamp occurs before an ISO8601
                        date.

Contribute

See <https://github.com/jonathanj/eliottree> for details.

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

eliot-tree-18.0.0.tar.gz (76.9 kB view details)

Uploaded Source

Built Distributions

eliot_tree-18.0.0-py3-none-any.whl (78.7 kB view details)

Uploaded Python 3

eliot_tree-18.0.0-py2-none-any.whl (78.7 kB view details)

Uploaded Python 2

File details

Details for the file eliot-tree-18.0.0.tar.gz.

File metadata

  • Download URL: eliot-tree-18.0.0.tar.gz
  • Upload date:
  • Size: 76.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for eliot-tree-18.0.0.tar.gz
Algorithm Hash digest
SHA256 78ba207afa12540b7b881a78e50e61b6dfaeb2e9b3d2b2185b09b74524761561
MD5 b431054e92917f4673ed2b0fe6b7c805
BLAKE2b-256 8f3a915fd6cdd297400e3cace5ec5d575270dfe34e9e167a7e9936971ea8869a

See more details on using hashes here.

Provenance

File details

Details for the file eliot_tree-18.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for eliot_tree-18.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0fd796ce1a62701c527a15a46efe8ed4e0b3956b1f831a497f2adfc85240df11
MD5 e59960e62093f431aa7fc816f0dc8015
BLAKE2b-256 854afd5d16850c21fa737fa77be221c34e9ae1a3608b206200dfcc883c1d4d02

See more details on using hashes here.

Provenance

File details

Details for the file eliot_tree-18.0.0-py2-none-any.whl.

File metadata

File hashes

Hashes for eliot_tree-18.0.0-py2-none-any.whl
Algorithm Hash digest
SHA256 c3fe7ee02e05cb85ca90223538415a61664c025f6c4818ec7346e7bc5bb5ed8e
MD5 d2b0507134282c6a2a11fb4d82753f4f
BLAKE2b-256 a484020b28a5daebcc3a621bb404700065e42050026fd5f6381e09f81a8b6fc1

See more details on using hashes here.

Provenance

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