Skip to main content

Chocs-Trace
PyPI version CI Release License: MIT

Http tracing middleware for chocs library.

Installation

Poetry:

poetry add chocs-middleware.trace

Pip:

pip install chocs-middleware.trace

Features

  • Automatic generation and propagation of tracing headers (x-request-id, x-correlation-id, x-causation-id)
  • Sentry integration
  • More intuitive log formatting options
  • Structured logging

Usage

Support tracing in your responses

from chocs_middleware.trace import TraceMiddleware
from chocs import Application, HttpRequest, HttpResponse

# id_prefix will ensure generated tracing headers to contain your prefix
app = Application(TraceMiddleware(id_prefix="service-name-"))


@app.get("/hello")
def say_hello(req: HttpRequest) -> HttpResponse:
    return HttpResponse("Hello!")  # tracing middleware will automatically attach x-request-id, x-correlation-id, x-causation-id headers to your response

Tracing requests

from chocs_middleware.trace import TraceMiddleware, HttpStrategy
from chocs import Application, HttpRequest, HttpResponse
import requests

# http_strategy will try to detect requests library and use it to add tracing headers in all your requests
# if it fails to detect requests library it will fallback to urllib3
app = Application(TraceMiddleware(http_strategy=HttpStrategy.AUTO))


@app.get("/hello")
def say_hello(req: HttpRequest) -> HttpResponse:
    
    requests.get("http://example.com/test")  # middleware will automatically attach x-correlation-id, x-causation-id and x-request-id headers to your request
    
    return HttpResponse("Hello!")

# when using the requests.request method you will need to add headers for it to use, otherwise it will generate default headers and is unable to attach x-correlation-id, x-causation-id and x-request-id headers
@app.get("/test")
    def say_hello(req: HttpRequest, headers=req.headers) -> HttpResponse:
        response = requests.request("GET", "http://test.com/")
        assert response.content == b"ok"

        return HttpResponse("OK")

Using logger

from chocs import Application, HttpRequest, HttpResponse
from chocs_middleware.trace import TraceMiddleware, Logger

app = Application(TraceMiddleware())


@app.get("/hello")
def say_hello(req: HttpRequest) -> HttpResponse:
    logger = Logger.get("logger_name")
    logger.info("Hello {name}!", name="Bob")  # will output to log stream Hello Bob!
    return HttpResponse("Hello!")

Formatting message

from chocs import Application, HttpRequest, HttpResponse
from chocs_middleware.trace import TraceMiddleware, Logger

app = Application(TraceMiddleware())


@app.get("/hello")
def say_hello(req: HttpRequest) -> HttpResponse:
    logger = Logger.get("logger_name", message_format="[{level}] {tags.request.x-correlation-id} {msg}")
    logger.info("Hello {name}!", name="Bob")  # will output to log stream Hello Bob!
    return HttpResponse("Hello!")

Available formatting options

Name Example value Description
{level} DEBUG Log level name
{msg} Example message Log message after interpolation
{log_message} Example {name} Log message before interpolation
{timestamp} 2022-03-07T20:06:23.453866 Time of the logged message
{filename} example.py Name of the python file where message was log
{funcName} example_function Name of the function where message was log
{module} example_module Name of the module where message was log
{pathname} example/path Path name of the file where message was log
{tags.*} some value Custom tag value set by calling Logger.set_tag function

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

chocs_middleware_trace-0.4.3.tar.gz (6.1 kB view details)

Uploaded Source

File details

Details for the file chocs_middleware_trace-0.4.3.tar.gz.

File metadata

  • Download URL: chocs_middleware_trace-0.4.3.tar.gz
  • Upload date:
  • Size: 6.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.4.1 CPython/3.8.16 Linux/5.15.0-1034-azure

File hashes

Hashes for chocs_middleware_trace-0.4.3.tar.gz
Algorithm Hash digest
SHA256 fe19bd104e9ff95a1044618c6a4dc81fba3ef9356f40057b6781e51bf062ca45
MD5 2e88707f2fc4dac0e4b6941b4bc2b7bb
BLAKE2b-256 c16d2ededaad91dabe4602095fee005da85be23643600c01439e1ef7c7cfc2d5

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.4.3 This release

1 file

0.4.2

1 file

0.4.1

1 file

0.4.0

1 file

0.3.0

1 file

0.2.0

1 file

0.1.2

1 file

0.1.1

1 file

0.1.0

1 file

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page