aiologfields: inject Task-context-fields into loggers
Project description
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5418c4d3abea53036e5cdcd6b4e18fac48f894c0b2294e4e5b25eed4fdb3d1c6 |
|
MD5 | 153d7e5fd89b842975c6036123418e86 |
|
BLAKE2b-256 | 0645a04e2fbd10a2abcbd1da685629966321aa22abcd72ae1636e1aa1c901237 |
File details
Details for the file aiologfields-2019.12.1-py2.py3-none-any.whl
.
File metadata
- Download URL: aiologfields-2019.12.1-py2.py3-none-any.whl
- Upload date:
- Size: 8.2 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: python-requests/2.22.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d11b0f9a074493741d02fb3aebac1dc0c8e7b0defd53da6babc0243545c95284 |
|
MD5 | f9e1335d6aa842f61a239232608ea226 |
|
BLAKE2b-256 | f6a17479f08c643cf63708a44b70e028684a39e55c3ce80c695323a7a5e6263a |