Skip to main content

Structured JSON logging with automatic context propagation.

Project description

philiprehberger-struct-log

Tests PyPI version Last updated

Structured JSON logging with automatic context propagation.

Installation

pip install philiprehberger-struct-log

Usage

Basic logging

from philiprehberger_struct_log import get_logger

logger = get_logger("myapp")
logger.info("Server started", extra={"port": 8080})
# {"timestamp": "2026-03-21T12:00:00+00:00", "level": "INFO", "message": "Server started", "logger": "myapp", "port": 8080}

Context propagation

from philiprehberger_struct_log import get_logger, bind_context, clear_context

logger = get_logger("myapp")

bind_context(request_id="abc-123", user="alice")
logger.info("Processing request")
# {"timestamp": "...", "level": "INFO", "message": "Processing request", "logger": "myapp", "request_id": "abc-123", "user": "alice"}

clear_context()

Scoped context

Use log_context as a context manager for nested scoped context. On exit, the previous context is automatically restored.

from philiprehberger_struct_log import get_logger, log_context

logger = get_logger("myapp")

with log_context(request_id="abc"):
    logger.info("handling")  # includes request_id
    with log_context(user_id="123"):
        logger.info("auth")  # includes request_id AND user_id
    logger.info("done")  # only request_id

Inspecting context

from philiprehberger_struct_log import bind_context, get_context

bind_context(service="api", env="production")
ctx = get_context()
# {"service": "api", "env": "production"}

API

Name Description
get_logger(name) Get or create a logger with a StructHandler attached. Level is set to DEBUG.
bind_context(**kwargs) Store key-value pairs in thread-local context. Included in every log entry on the current thread.
clear_context() Clear all bound context for the current thread.
get_context() Return a copy of the current thread-local context as a dict.
log_context(**kwargs) Context manager that merges kwargs into context on enter and restores previous context on exit. Supports nesting.
StructHandler(stream=None) Logging handler that formats records as JSON lines. Defaults to stderr.

JSON output fields

Field Description
timestamp ISO 8601 UTC timestamp
level Log level name (DEBUG, INFO, WARNING, ERROR, CRITICAL)
message Formatted log message
logger Logger name

Bound context fields and any extra={} kwargs passed to the log call are merged into the top-level JSON object.

Development

pip install -e .
python -m pytest tests/ -v

Support

If you find this project useful:

Star the repo

🐛 Report issues

💡 Suggest features

❤️ Sponsor development

🌐 All Open Source Projects

💻 GitHub Profile

🔗 LinkedIn Profile

License

MIT

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

philiprehberger_struct_log-0.2.1.tar.gz (6.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

philiprehberger_struct_log-0.2.1-py3-none-any.whl (5.2 kB view details)

Uploaded Python 3

File details

Details for the file philiprehberger_struct_log-0.2.1.tar.gz.

File metadata

File hashes

Hashes for philiprehberger_struct_log-0.2.1.tar.gz
Algorithm Hash digest
SHA256 897aba8d9ecd68716222234a88a506addb730cf284add0d28b5f669d106473cd
MD5 079c8fe512157138dc35b7b4f32eb686
BLAKE2b-256 1932a5bf98749ca1450f6d69482492a0fa0655fe4d6117f747021001f2b0be76

See more details on using hashes here.

File details

Details for the file philiprehberger_struct_log-0.2.1-py3-none-any.whl.

File metadata

File hashes

Hashes for philiprehberger_struct_log-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 5d51111969b8676ddd17e8c8f9d07d30cccb29b07de42c49a9fc06517c8b88a4
MD5 3bb91bec50678e3e288c9a92c553f5a8
BLAKE2b-256 3c85533553fa51485f12452d37fd35832806ede0d0fd7b51563595406931aa95

See more details on using hashes here.

Supported by

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