21.2.0
Highlights
- Support for for beautiful (and helpful!) exceptions by integrating ConsoleRenderer with rich or better-exceptions.
- Helpers to access thread-local and context-local context.
- Deeper contextvars support.
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 configurestructlog
manually. This change is not really breaking, because the old use-case will keep working as before. However if you passpretty_exceptions=True
(which is the default if eitherrich
orbetter-exceptions
is installed), a warning will be raised and the exception will be renderered without prettyfication.
Deprecations:
none
Changes:
-
structlog
is now importable ifsys.stdout
isNone
(e.g. when running usingpythonw
). #313 -
structlog.threadlocal.get_threadlocal()
andstructlog.contextvars.get_contextvars()
can now be used to get a copy of the current thread-local/context-local context that has been bound usingstructlog.threadlocal.bind_threadlocal()
andstructlog.contextvars.bind_contextvars()
. #331 #337 -
structlog.threadlocal.get_merged_threadlocal(bl)
andstructlog.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 tocontextvars.Token
s, allowing you to reset values using the newstructlog.contextvars.reset_contextvars()
. #339 -
Exception rendering in
structlog.dev.ConsoleLogger
is now configurable using theexception_formatter
setting. If either the rich or the better-exceptions package is present,structlog
will use them for pretty-printing tracebacks.rich
takes precedence overbetter-exceptions
if both are present.This only works if
format_exc_info
is absent in the processor chain. #330 #349 -
All use of
colorama
on non-Windows systems has been excised. Thus, colors are now enabled by default instructlog.dev.ConsoleRenderer
on non-Windows systems. You can keep usingcolorama
to customize colors, of course. #345 -
The final processor can now return a
bytearray
(additionally tostr
andbytes
). #344