structlog v21.2.0 Release Notes

Release Date: 2021-10-12 // over 2 years ago
  • Backward-incompatible changes:

    • ๐Ÿ‘€ To implement pretty exceptions (see Changes below), structlog.dev.ConsoleRenderer now formats exceptions itself.

    Make sure to remove format_exc_info from your processor chain if you configure structlog manually. This change is not really breaking, because the old use-case will keep working as before. However if you pass pretty_exceptions=True (which is the default if either rich or better-exceptions is installed), a warning will be raised and the exception will be renderered without prettyfication.

    ๐Ÿ—„ Deprecations: ^

    none

    ๐Ÿ”„ Changes: ^

    • structlog is now importable if sys.stdout is None (e.g. when running using pythonw). #313 <https://github.com/hynek/structlog/issues/313>_
    • structlog.threadlocal.get_threadlocal() and structlog.contextvars.get_contextvars() can now be used to get a copy of the current thread-local/context-local context that has been bound using structlog.threadlocal.bind_threadlocal() and structlog.contextvars.bind_contextvars(). #331 <https://github.com/hynek/structlog/pull/331>_ #337 <https://github.com/hynek/structlog/pull/337>_
    • ๐Ÿ”€ structlog.threadlocal.get_merged_threadlocal(bl) and structlog.contextvars.get_merged_contextvars(bl) do the same, but also merge the context from a bound logger bl. Same pull requests as previous change.
    • structlog.contextvars.bind_contextvars() now returns a mapping of keys to contextvars.Token\s, allowing you to reset values using the new structlog.contextvars.reset_contextvars(). #339 <https://github.com/hynek/structlog/pull/339>_
    • ๐Ÿ”ง Exception rendering in structlog.dev.ConsoleLogger is now configurable using the exception_formatter setting. If either the rich <https://github.com/willmcgugan/rich>_ or the better-exceptions <https://github.com/qix-/better-exceptions>_ package is present, structlog will use them for pretty-printing tracebacks. rich takes precedence over better-exceptions if both are present.

    This only works if format_exc_info is absent in the processor chain. #330 <https://github.com/hynek/structlog/pull/330>_ #349 <https://github.com/hynek/structlog/pull/349>_

    • ๐Ÿ All use of colorama on non-Windows systems has been excised. Thus, colors are now enabled by default in structlog.dev.ConsoleRenderer on non-Windows systems. You can keep using colorama to customize colors, of course. #345 <https://github.com/hynek/structlog/pull/345>_
    • The final processor can now return a bytearray (additionally to str and bytes). #344 <https://github.com/hynek/structlog/issues/344>_