Skip to main content

A simple logging system for (async) contexts

Project description

This module helps to solve the following problem:

You have an async program. It does lots of things in parallel. You don't really know what's happening. Then you get a deadlock, or a cancellation whose initial trigger is masked by another error or an unprotected async call within a finally: block.

You now have no idea what's happening, and low-level instrumentation of your code causes the error to get lost in the noise.

Here's how logcontext can help.

First, wrap your main code::

from logcontext import main_context
def main():
	with main_context():
		... # whatever your program does

Then you wrap each possibly-interesting block, nursery, async context, … with

from logcontext import context_of
...
async def code_of_interest(arg):
	with context_of("interesting: %s", arg) as ctx:
	    ... # start some subtask

		# display what my subcontexts are doing, if anything
		ctx.log_tree()  

Text and positional arguments will be passed to logging.log.

Reporting on the current state of your code is then as easy as::

from logcontext import log_backtrace, log_tree

...
log_tree()  # reports the whole program's context tree
log_backtrace()  # reports the contexts leading to the current code

Both context_of and log_tree accept a log level. This way you can selectively attach higher log levels to possibly-interesting code. "Uninteresting" subtrees are skipped.

"""

from ._main import main_context, context_of, log_backtrace, log_tree

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

logcontext-0.1.1.tar.gz (4.0 kB view hashes)

Uploaded Source

Built Distribution

logcontext-0.1.1-py3-none-any.whl (3.9 kB view hashes)

Uploaded Python 3

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