23.1.0
Highlights
This release brings the hybrid approach to sync / async logging to structlog's standard library integration. You don't have to configure anything anymore, simply prepend the method name with an a
and await it: await logger.ainfo("this is async!")
. structlog.stdlib.AsyncBoundLogger
will probably be deprecated in the future.
This release also brings support for FORCE_COLOR
and NO_COLOR
to structlog's default configuration. structlog was originally not meant to be used without configuration, but times have changed and we're breaking new ground!
Special Thanks
This release would not be possible without my generous sponsors! Thank you to all of you making sustainable maintenance possible! If you would like to join them, go to https://github.com/sponsors/hynek and check out the sweet perks!
Above and Beyond
Variomedia AG (@variomedia), Tidelift (@tidelift), Sentry (@getsentry), HiredScore (@HiredScore), FilePreviews (@filepreviews), and Daniel Fortunov (@asqui).
Maintenance Sustainers
Adam Hill (@adamghill), Dan Groshev (@si14), Magnus Watn (@magnuswatn), David Cramer (@dcramer), Moving Content AG (@moving-content), Stein Magnus Jodal (@jodal), ProteinQure (@ProteinQure), Jesse Snyder (@jessesnyder), Rivo Laks (@rivol), Tom Ballinger (@thomasballinger), @medecau, Ionel Cristian Mărieș (@ionelmc), The Westervelt Company (@westerveltco), Philippe Galvan (@PhilippeGalvan), Birk Jernström (@birkjernstrom), Tim Schilling (@tim-schilling), Chris Withers (@cjw296), Christopher Dignam (@chdsbd), and Stefan Hagen (@sthagen).
Not to forget 2 more amazing humans who chose to be generous but anonymous!
Full Changelog
Added
-
structlog.stdlib.BoundLogger
now has, analogously to our native logger, a full set of async log methods prefixed with ana
:await log.ainfo("event!")
#502 -
The default configuration now respects the presence of
FORCE_COLOR
(regardless of its value, unless an empty string). This disables all heuristics whether it makes sense to use colors. #503 -
The default configuration now respects the presence of
NO_COLOR
(regardless of its value, unless an empty string). This disables all heuristics whether it makes sense to use colors and overridesFORCE_COLOR
. #504
Fixed
-
ConsoleRenderer now reuses the
_figure_out_exc_info
to process theexc_info
argument likeExceptionRenderer
does. This prevents crashes if the actual Exception is passed for the exc_info argument instead of a tuple orTrue
. #482 -
FilteringBoundLogger.aexception()
now extracts the exception info usingsys.exc_info()
before passing control to the asyncio executor (where original exception info is no longer available). #488