Skip to main content

Eliot: Logging for Complex & Distributed Systems

Coveralls test coverage information Build Status

Eliot is a Python logging system designed not only for simple applications but for complex applications as well, including distributed systems. Eliot supports simple structured messages but can also record a causal chain of actions happening within and across process boundaries: a logical trace of the system’s operation.

Structured, action-oriented logging is a great help when debugging problems. For example, here are the combined logs of a request originating from a client process being sent to a server. Notice how easy it is to figure out the cause of the problem, even though it’s opaque to the client:

process='client' task_uuid='40be6df2' task_level=[1] action_type='main'
    action_status='started'

process='client' task_uuid='40be6df2' task_level=[2, 1] action_type='http_request'
    action_status='started' x=5 y=0

process='server' task_uuid='40be6df2' task_level=[2, 2, 1] action_type='eliot:remote_task'
    action_status='started'

process='server' task_uuid='40be6df2' task_level=[2, 2, 2, 1] action_type='divide'
    action_status='started' x=5 y=0

process='server' task_uuid='40be6df2' task_level=[2, 2, 2, 2] action_type='divide'
    action_status='failed' exception='exceptions.ZeroDivisionError' reason='integer division or modulo by zero'

process='server' task_uuid='40be6df2' task_level=[2, 2, 3] action_type='eliot:remote_task'
    action_status='failed' exception='exceptions.ZeroDivisionError' reason='integer division or modulo by zero'

process='client' task_uuid='40be6df2' task_level=[2, 3] action_type='http_request'
   action_status='failed' exception='requests.exception.HTTPError' reason='500 Server Error: INTERNAL SERVER ERROR'

process='client' task_uuid='40be6df2' task_level=[3] action_type='main'
   action_status='failed' exception='requests.exception.HTTPError' reason='500 Server Error: INTERNAL SERVER ERROR'

Features:

  • Structured, typed log messages.

  • Ability to log actions, not just point-in-time information: log messages become a trace of program execution.

  • Logged actions can span processes and threads.

  • Excellent support for unit testing your code’s logging.

  • Emphasis on performance, including no blocking I/O in logging code path.

  • Optional Twisted support.

  • Designed for JSON output, usable by Logstash/Elasticsearch.

  • Supports CPython 2.7, 3.3, 3.4 and PyPy.

  • Eliot APIs provide both PEP 8 style (e.g. write_traceback()) and Twisted (e.g. writeTraceback()) method and function names. The only exceptions are pyunit-style assertions (e.g. assertContainsFields()) and Twisted-specific APIs since both use camelCase by default.

Eliot is released by ClusterHQ under the Apache 2.0 License.

To install:

$ pip install eliot

Downloads are available on PyPI.

Documentation can be found on Read The Docs.

Bugs and feature requests should be filed at the project Github page.

You can ask for help on IRC at the #eliot channel on irc.freenode.net.

Metadata

Release files for eliot 0.7.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for eliot 0.7.1
File Size Uploaded
eliot-0.7.1.tar.gz 90.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for eliot 0.7.1
File Interpreter ABI Platform
eliot-0.7.1-py2.py3-none-any.whl Python 3, Python 2 none any Details

Total release size: 155.0 kB

Release files / eliot-0.7.1.tar.gz

Download URL eliot-0.7.1.tar.gz
Size 90.8 kB
Tags Source
SHA-256 checksum
How to use checksums
0f53020f5a05f98e44db4b0ee0564334fd96a45a6dc03e7819a3d0a83cc25f17
BLAKE2b-256 checksum
How to use checksums
d71730a0d472606df5fc251045eb65632c223e134152237d46cd492f8a31b373
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / eliot-0.7.1-py2.py3-none-any.whl

Download URL eliot-0.7.1-py2.py3-none-any.whl
Size 64.3 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
3e4515fa4b1710b62dad86813a781c39da076db8c74706c05f7a04ba42ca4b17
BLAKE2b-256 checksum
How to use checksums
d33c7c6e42bdc7e77a5a0263a3b3c8359cd8b1adefd80a7b0c147ac9d772112b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

1.17.5

2 release files

1.16.0

2 release files

1.15.0

1 release file

1.14.0

2 release files

1.13.0

2 release files

1.12.0

2 release files

1.10.0

2 release files

1.9.0

2 release files

1.8.0

2 release files

1.7.0

2 release files

1.6.0

2 release files

1.5.0

2 release files

1.4.0

2 release files

1.3.0

2 release files

1.2.0

2 release files

1.1.0

2 release files

1.0.0

2 release files

0.9.0

2 release files

0.8.0

2 release files

This release

0.7.1 This release

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.4.0

1 release file

0.3.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page