<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">
<html><body style='font-family: Verdana,Geneva,sans-serif'>
<p>Eliot provides a structured logging and tracing system for Python that generates log messages describing a forest of nested actions. Actions start and eventually finish, successfully or not. Log messages thus tell a story: what happened and what caused it.</p>
<p>Eliot has first class support for Twisted, including integration with Trial.</p>
<div dir="ltr">
<div class="gmail_quote">
<div dir="ltr">
<p>Eliot is released by <a href="https://docs.clusterhq.com">ClusterHQ</a>, the Data People for Docker™, and is available at <a href="https://pypi.python.org/pypi/eliot">https://pypi.python.org/pypi/eliot</a>. Documentation is available at <a href="https://eliot.readthedocs.org">https://eliot.readthedocs.org</a>.</p>
<p> </p>
<p>Here's what your logs might look like before using Eliot:</p>
<pre>Going to validate <a href="http://example.com/index.html">http://example.com/index.html</a>.
Started download attempted.
Download succeeded!
Missing <title> element in "/html/body".
Bad HTML entity in "/html/body/p[2]".
2 validation errors found!
</pre>
<p>After switching to Eliot you'll get a tree of messages with both message contents and causal relationships encoded in a structured format:</p>
<ul>
<li><tt>{"action_type": "validate_page", "action_status": "started", "url": <span>"<a href="http://example.com/index.html">http://example.com/index.html</a>"}</span></tt>
<ul>
<li><tt>{"action_type": "download", "action_status": "started"}</tt></li>
<li><tt>{"action_type": "download", "action_status": "succeeded"}</tt></li>
<li><tt>{"action_type": "validate_html", "action_status": "started"}</tt>
<ul>
<li><tt>{"message_type": "validation_error", "error_type": "missing_title", "xpath": "/html/head"}</tt></li>
<li><tt>{"message_type": "validation_error", "error_type": "bad_entity", "xpath": <span>"/html/body/p[2]"}</span></tt></li>
</ul>
</li>
<li><tt>{"action_type": "validate_html", "action_status": "failed", "exception": "validator.ValidationFailed"}</tt></li>
</ul>
</li>
<li><tt>{"action_type": "validate_page", "action_status": "failed", "exception": "validator.ValidationFailed"}</tt></li>
</ul>
<p> </p>
<p>What's New in 0.5.0:</p>
<ul>
<li>Added support for Python 3.4.</li>
<li>Most public methods and functions now have underscore-based equivalents to the camel case versions, e.g. <tt><span>eliot.write_traceback</span></tt> and <tt><span>eliot.writeTraceback</span></tt>, for use in PEP 8 styled programs. Twisted-facing APIs and pyunit assertions do not provide these additional APIs, as camel-case is the native idiom.</li>
<li><tt><span>eliot.to_file</span></tt> outputs log messages to a file.</li>
<li>Documented how to load Eliot logging into ElasticSearch via Logstash.</li>
<li>Documentation has been significantly reorganized.</li>
</ul>
</div>
</div>
</div>
<div> </div>
</body></html>