Most logging systems can tell you what happened; Eliot tells you _why_
it happened:

$ python linkcheck.py | eliot-tree
4c42a789-76f5-4f0b-b154-3dd0e3041445
+-- check_links@1/started
 `-- urls: [u'http://google.com', u'http://nosuchurl']
 +-- download@2,1/started
 `-- url: http://google.com
 +-- download@2,2/succeeded
 +-- download@3,1/started
 `-- url: http://nosuchurl
 +-- download@3,2/failed
 |-- exception: requests.exceptions.ConnectionError
 |-- reason: ('Conn aborted', gaierror(-2, 'Name unknown'))
 +-- check_links@4/failed
 |-- exception: exceptions.ValueError
 |-- reason: ('Conn aborted.', gaierror(-2, 'Name unknown'))
 And here's the code that generated these logs (eliot-tree [1] was used
to render the output):

import sys
from eliot import start_action, to_file
import requests
to_file(sys.stdout)

def check_links(urls):
 with start_action(action_type="check_links", urls=urls):
 for url in urls:
 try:
 with start_action(action_type="download", url=url):
 response = requests.get(url)
 response.raise_for_status()
 except Exception as e:
 raise ValueError(str(e))

check_links(["http://google.com";], ["http://nosuchurl";])

Interested? Read more at https://eliot.readthedocs.org/ [2].

Eliot is released under the Apache License 2 by ClusterHQ [3], the
Container Data People. We're hiring! [4]
 

Links:
------
[1] https://warehouse.python.org/project/eliot-tree/
[2] https://eliot.readthedocs.org/
[3] https://clusterhq.com
[4] https://clusterhq.com/careers/
_______________________________________________
Twisted-Python mailing list
Twisted-Python@twistedmatrix.com
http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python

Reply via email to