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 details)

Uploaded Source

Built Distribution

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

Uploaded Python 3

File details

Details for the file logcontext-0.1.1.tar.gz.

File metadata

  • Download URL: logcontext-0.1.1.tar.gz
  • Upload date:
  • Size: 4.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.8.2 requests/2.25.1 setuptools/65.3.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.10.7

File hashes

Hashes for logcontext-0.1.1.tar.gz
Algorithm Hash digest
SHA256 e480277f542e058c31192ef1d1405f6cb3ce42ab944ebe37b640d359d0b376a6
MD5 bb7655d2cdb2d8df20eba9dfa6816ad9
BLAKE2b-256 79ef77dc69541a6e8c252dc2fde062589577db660c50d784cf6bf6faf621dbf7

See more details on using hashes here.

File details

Details for the file logcontext-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: logcontext-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 3.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.8.2 requests/2.25.1 setuptools/65.3.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.10.7

File hashes

Hashes for logcontext-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 d527838a09092668e80c242bd31e20785d21e1e498a9094166c01b4ed8c0d6e9
MD5 ef8f2f257baef012e04f1db4ecff1eb8
BLAKE2b-256 918840e57c0fdde654da660e9ac291d54f30ed5d86b5e7ab7abffe54a442cd12

See more details on using hashes here.

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