Small, helper library for logging contextual information using contextvars in Python 3.7.
Using pip
$ pip install contextfilter
import logging
from contextvars import ContextVar
from contextfilter import ContextVarFilter, ConstContextFilter
request_id: ContextVar[int] = ContextVar('request_id')
logger = logging.getLogger("test")
cf = ContextFilter(request_id=request_id)
request_id.set(3)
logger.addFilter(cf)
logger.info("test")
# Log record will contain the attribute request_id with value 3
cf = ConstContextFilter(some_const=1)
logger.addFilter(cf)
logger.info("test")
# Log record will contain the attribute some_const with value 1.
To work on the contextfilter
codebase, you'll want to fork the project and clone it locally and install the required dependencies via poetry:
$ git clone git@github.com:{USER}/contextfilter.git
$ make install
To run tests and linters use command below:
$ make lint && make test
If you want to run only tests or linters you can explicitly specify which test environment you want to run, e.g.:
$ make lint-black
contextfilter
is licensed under the MIT license. See the license file for details.
- Renamed
ContextFilter
toContextVarFilter
- Revamped the API - It now accepts ContextVars created by caller. Suggestion for design by @bentheiii - Added
ConstContextFilter
which adds constant attributes to the log record. - Fixed #5