Render Eliot logs as an ASCII tree
Project description
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Filename, size | File type | Python version | Upload date | Hashes |
---|---|---|---|---|
Filename, size eliot_tree-18.0.0-py2-none-any.whl (78.7 kB) | File type Wheel | Python version py2 | Upload date | Hashes View |
Filename, size eliot_tree-18.0.0-py3-none-any.whl (78.7 kB) | File type Wheel | Python version py3 | Upload date | Hashes View |
Filename, size eliot-tree-18.0.0.tar.gz (76.9 kB) | File type Source | Python version None | Upload date | Hashes View |
Close
Hashes for eliot_tree-18.0.0-py2-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c3fe7ee02e05cb85ca90223538415a61664c025f6c4818ec7346e7bc5bb5ed8e |
|
MD5 | d2b0507134282c6a2a11fb4d82753f4f |
|
BLAKE2-256 | a484020b28a5daebcc3a621bb404700065e42050026fd5f6381e09f81a8b6fc1 |
Close
Hashes for eliot_tree-18.0.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0fd796ce1a62701c527a15a46efe8ed4e0b3956b1f831a497f2adfc85240df11 |
|
MD5 | e59960e62093f431aa7fc816f0dc8015 |
|
BLAKE2-256 | 854afd5d16850c21fa737fa77be221c34e9ae1a3608b206200dfcc883c1d4d02 |