Skip to main content

An opinionated hydra plugin to configure logging with structlog

Project description

Hydra-Structlog

CI PyPI Python Versions Support on Ko-fi

An opinionated hydra plugin to configure logging with structlog.

Usage

Structlog is fully integrated in Hydra through a config group named structlog for hydra.job_logging.

  1. Install the plugin.

    uv add hydra-structlog
    
  2. Override the job logging with a default in your config.

    defaults:
      - override hydra/job_logging=structlog
    
  3. Hydra will now emit JSON logs (by default to structured.log) and print human readably logs to the console.

Customization

Structlog comes configured with opinionated defaults.

To adjust the processors, use the hydra defaults as outlined above and overwrite individual config entries afterwards. For example:

defaults:
  - override hydra/job_logging=structlog

# Change the storage location
hydra:
  job_logging:
    handlers:
      json:
        filename: ${hydra.runtime.cwd}/logs/structured.log

Defaults

The configuration runs structlog through the standard library logging. That has several advantages.

The use of structlog and logging, e.g. by third-party packages, are recorded and both exhibit structlog's bound contextvars.

The processor chain is conveniently exposed in the job_logging configuration and adjustable through hydra's config interface.

Because lists are not easily manipulated in hydra configs, the processor chains are defined as dictionaries. The name of each processor does not matter as long as its unique in the chain. The default processor chain can then be extended more comfortably.

To remove a processor set it to null. See example below.

Because structlog's ProcessorFormatter does not accept the processors as strings, the logging config contains _target_ instantiation.

defaults:
  - override hydra/job_logging=structlog

# Remove a processor from the default chain and add another one
hydra:
  job_logging:
    formatters:
      json:
        foreign_pre_chain:
          # Remove the add-log-level processor
          add_logger_name: null
          # Append a new processor
          arbitrary_name:
            # Follow hydra's instantiate syntax
            _target_: structlog.stdlib.add_log_level_number
            _partial_: true

Notes

Python 3.14 is currently not supported as hydra.main causes a ValueError on argparse-validation, see https://github.com/facebookresearch/hydra/issues/3121. It is recommended to use hydra-zen which does not have that problem and works well with Python 3.14.

Tracer injection is not implemented here as data science projects using hydra typically do not implement web apps. Nevertheless, an appropriate structlog processor can be added to the job_logging config.

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

hydra_structlog-0.2.0.tar.gz (7.6 kB view details)

Uploaded Source

Built Distribution

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

hydra_structlog-0.2.0-py3-none-any.whl (10.4 kB view details)

Uploaded Python 3

File details

Details for the file hydra_structlog-0.2.0.tar.gz.

File metadata

  • Download URL: hydra_structlog-0.2.0.tar.gz
  • Upload date:
  • Size: 7.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for hydra_structlog-0.2.0.tar.gz
Algorithm Hash digest
SHA256 84cb1af49db570f1877b5d355a76e17077ba247d6fb88755c7a27ff5fb3665c4
MD5 34c2d5d812d57712a85563d7c0a38723
BLAKE2b-256 234deb0a404801b6e085c9f8def9976305fd33a37cb1a4d80568ba4345faa21f

See more details on using hashes here.

Provenance

The following attestation bundles were made for hydra_structlog-0.2.0.tar.gz:

Publisher: pypi.yml on szapp/hydra-structlog

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file hydra_structlog-0.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for hydra_structlog-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 fbc54d1b9e222fed57ad1038f43f24a0194236a2fdc6d6f9504cf63994b0a020
MD5 a682fc42ba33d778e17b0209f76d4540
BLAKE2b-256 e57a1abdd20d6dff96c1cd9115261ca407fea7694ffbb97698b79295bacc4e9b

See more details on using hashes here.

Provenance

The following attestation bundles were made for hydra_structlog-0.2.0-py3-none-any.whl:

Publisher: pypi.yml on szapp/hydra-structlog

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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