Skip to main content

aiologfields: inject Task-context-fields into loggers

Project description

https://github.com/cjrh/aiologfields/workflows/Python%20application/badge.svg https://coveralls.io/repos/github/cjrh/aiologfields/badge.svg?branch=master https://img.shields.io/pypi/pyversions/aiologfields.svg https://img.shields.io/github/tag/cjrh/aiologfields.svg https://img.shields.io/badge/install-pip%20install%20aiologfields-ff69b4.svg https://img.shields.io/pypi/v/aiologfields.svg https://img.shields.io/badge/calver-YYYY.MM.MINOR-22bfda.svg Downloads This project uses the "black" style formatter for Python code

aiologfields

aiologfields makes it easy to include correlation IDs, as well as other contextual information into log messages, across await calls and loop.create_task() calls. Correlation IDs are critically important for accurate telemetry in monitoring and debugging distributed microservices.

Instructions

It couldn’t be easier:

aiologfields.install()

After this, every single task created will have a logging_fields attribute. To add a field to a LogRecord, simply apply it to any task:

t = loop.create_task(coro)
t.logging_fields.correlation_id = '12345'

If you’re using a logging handler that produces JSON output (like logjson!), or some other formatter that produces output with all fields in the LogRecord, you will find that each record within the context of the task will include an additional field called correlation_id with a value of 12345.

Demo

This is adapted from one of the tests:

aiologfields.install()
correlation_id = str(uuid4())
logger = logging.getLogger('blah')

async def cf2():
    logger.info('blah blah')

async def cf1():
    ct = asyncio.Task.current_task()
    ct.logging_fields.correlation_id = correlation_id
    await cf2()

loop.run_until_complete(cf1())

In the LogRecord produced inside cf2(), an additional field correlation_id is included, even though the field was set in coroutine function cf1().

It would also have worked if cf2() had been executed in a separate task itself, since the logging_fields namespace is copied between nested tasks.

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

aiologfields-2019.12.1.tar.gz (9.7 kB view details)

Uploaded Source

Built Distribution

aiologfields-2019.12.1-py2.py3-none-any.whl (8.2 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file aiologfields-2019.12.1.tar.gz.

File metadata

  • Download URL: aiologfields-2019.12.1.tar.gz
  • Upload date:
  • Size: 9.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.22.0

File hashes

Hashes for aiologfields-2019.12.1.tar.gz
Algorithm Hash digest
SHA256 5418c4d3abea53036e5cdcd6b4e18fac48f894c0b2294e4e5b25eed4fdb3d1c6
MD5 153d7e5fd89b842975c6036123418e86
BLAKE2b-256 0645a04e2fbd10a2abcbd1da685629966321aa22abcd72ae1636e1aa1c901237

See more details on using hashes here.

File details

Details for the file aiologfields-2019.12.1-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for aiologfields-2019.12.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 d11b0f9a074493741d02fb3aebac1dc0c8e7b0defd53da6babc0243545c95284
MD5 f9e1335d6aa842f61a239232608ea226
BLAKE2b-256 f6a17479f08c643cf63708a44b70e028684a39e55c3ce80c695323a7a5e6263a

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