Change8

Migrating to structlog 25.4.0

Version 25.4.0 introduces 1 breaking change. This guide details how to update your code.

Released: 6/2/2025

1
Breaking Changes
2
Migration Steps
3
Affected Symbols

⚠️ Check Your Code

If you use any of these symbols, you need to read this guide:

structlog.stdlib.filter_by_levelstructlog.tracebacks.Stackstructlog.processors.ExceptionPrettyPrinter

Breaking Changes

Issue #1

Python 3.13.4 (and backported to 3.14) changes `logging.Logger.isEnabledFor()` to always return False while a log entry is in flight, which breaks `structlog.stdlib.filter_by_level()`. Upgrade structlog to this release before upgrading Python to avoid loss of log filtering.

Migration Steps

  1. 1
    If your code uses `structlog.stdlib.filter_by_level()`, upgrade to structlog 25.4.0 before upgrading to Python 3.13.4 or 3.14.
  2. 2
    No code changes required for the new exception‑group support; the new fields are added to `structlog.tracebacks.Stack`.

Release Summary

Version 25.4.0 adds Python 3.13.4/3.14 support and exception‑group handling, fixes ExceptionPrettyPrinter formatting, and introduces a breaking change for `filter_by_level()` on the new Python releases.

Need More Details?

View the full release notes and all changes for structlog 25.4.0.

View Full Changelog