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.1.tar.gz (7.7 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.1-py3-none-any.whl (10.4 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for hydra_structlog-0.2.1.tar.gz
Algorithm Hash digest
SHA256 e2ff32dd88fa9681979b76ba742c3b66aff35da5ce5400034de6bac8777049eb
MD5 292f80e1c5c3548926334ee168bf8546
BLAKE2b-256 1d09330fdaffbbcf60716636841e354207d4495163178bea043204665bf13f03

See more details on using hashes here.

Provenance

The following attestation bundles were made for hydra_structlog-0.2.1.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.1-py3-none-any.whl.

File metadata

File hashes

Hashes for hydra_structlog-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 8804ab91905cebf3a7a1023925a192beb120c8a9ba18e2fbd961307ac7adcc0f
MD5 3c128dfcdffd054f9ca335a59669bb3a
BLAKE2b-256 9e6bd864580e19e84b15c5cfff142ace44255c5aa4e1e93af63a9b0107976841

See more details on using hashes here.

Provenance

The following attestation bundles were made for hydra_structlog-0.2.1-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