chore(deps): update dependency structlog to v25 #217
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
==21.1.0
->==25.1.0
Warning
Some dependencies could not be looked up. Check the Dependency Dashboard for more information.
Release Notes
hynek/structlog (structlog)
v25.1.0
Compare Source
Added
Add
structlog.stdlib.render_to_log_args_and_kwargs
processor.Same as
structlog.stdlib.render_to_log_kwargs
, but also allows to pass positional arguments tologging
.With it, you do not need to add
structlog.stdlib.PositionalArgumentsFormatter
processor to format positional arguments from structlog loggers.#668
Native loggers now have
is_enabled_for()
andget_effective_level()
methods that mirror the behavior of the standard library'slogging.Logger.isEnabledFor()
andlogging.Logger.getEffectiveLevel()
.#689
Changed
structlog.typing.BindableLogger
protocol now returnsSelf
instead ofBindableLogger
.This adds a dependency on typing-extensions for Pythons older than 3.11.
#642
#659
structlog.dev.ConsoleRenderer
will quote string value with special characters.#647
structlog.stdlib.recreate_defaults()
now also addsstructlog.stdlib.PositionalArgumentsFormatter
.In default native mode, this is done by the loggers at the edge.
structlog.make_filtering_bound_logger()
now also accepts a string for min_level.Fixed
Fix handling calls to
{logger}.exception()
outside of exception blocks.Depending on the structlog configuration,
this either resulted in an event dict key
exception: "MISSING"
or lead to an error.Now, an invalid or missing
exc_info
will just be ignored.This means, that calling
{logger}.exception()
outside of an exception block is basically the same as calling{logger}.error()
.#634
#680
Instantiating
structlog.dev.ConsoleRenderer
does not mutate the passed styles dict anymore.#669
The native
FilteringBoundLogger.fatal()
method now maps to the critical level, as it does in the standard library.Note that the level is discouraged to use there, so we recommend to stick to
error()
orcritical()
.#677
structlog.tracebacks.ExceptionDictTransformer
now actually acceptsNone
forlocals_max_length
andlocals_max_string
.#675
v24.4.0
Compare Source
Changed
No code changes since 24.3.0
v24.3.0
Compare Source
Added
Restore feature parity between
structlog.traceback.ExceptionDictTransformer
and Rich's traceback extractor:repr()
on strings, too (improves handling ofSecretStr
implementations).locals_max_length
config optionlocals_hide_sunder
config optionlocals_hide_dunder
config optionsuppress
config option#627
Changed
structlog.testing.capture_logs()
now maps theexception
log level toerror
(as it's elsewhere).#628
v24.2.0
Compare Source
Added
It is now possible to disable log level-padding in
structlog.dev.LogLevelColumnFormatter
andstructlog.dev.ConsoleRenderer
.#599
The
structlog.processors.CallsiteParameterAdder
can now be pickled.#603
structlog.processors.CallsiteParameterAdder
now also works withstructlog.stdlib.BoundLogger
's non-standard async methods (ainfo()
, and so forth)#618
Changed
structlog.processors.LogfmtRenderer
now escapes newlines.#592
structlog.processors.LogfmtRenderer
now escapes backslashes and double quotes.#594
structlog.processors.CallsiteParameterAdder
has been optimized to be about 2x faster.#606
Fixed
structlog.stdlib.render_to_log_kwargs
now correctly passes stacklevel as a kwarg to stdlib logging.#619
v24.1.0
Compare Source
Fixed
The lazy logger proxy returned by
structlog.get_logger()
now returns its initial values when asked for context.When asked for context before binding for the first time, it returned an empty dictionary in 23.3.0.
The displayed level name when using
structlog.stdlib.BoundLogger.exception()
is"error"
instead of"exception"
.Fixes regression in 23.3.0.
#584
Don't ignore the
width
argument ofRichTracebackFormatter
.#587
v23.3.0
Compare Source
Added
The colorful development logger is now even more configurable!
Choose freely your colors and the order of the key-value pairs!
Implement your own formatters for certain keys!
Implementing the output on top of the new columns API has changed the default very slightly, but shouldn't be noticeable.
#577
Async log methods (those starting with an
a
) now also support the collection of callsite information usingstructlog.processors.CallsiteParameterAdder
.#565
Changed
structlog.stdlib.recreate_defaults()
now also addsstructlog.stdlib.add_logger_name
to the processors.Check out the updated screenshot!
Fixed
The return value from
get_logger()
(aBoundLoggerLazyProxy
) now passesisinstance
-checks againststructlog.typing.BindableLogger
on Python 3.12.#561
structlog.threadlocal.tmp_bind()
now also works withBoundLoggerLazyProxy
(in other words: before anything is bound to a bound logger).stdlib:
ProcessorFormatter
can now be told to not render the log record message usinggetMessage
and juststr(record.msg)
instead.#550
stdlib:
structlog.stdlib.BoundLogger.exception()
's handling ofLogRecord.exc_info
is now set consistent withlogging
.#571
#572
v23.2.0
Compare Source
Removed
Added
Official support for Python 3.12.
#515
structlog.processors.MaybeTimeStamper
that only adds a timestamp if there isn't one already.#81
structlog.dev.ConsoleRenderer
now supports renamed timestamp keys using the timestamp_key parameter.#541
structlog.dev.RichTracebackFormatter
that allows to configure the traceback formatting.#542
Fixed
FilteringBoundLogger.exception()
andFilteringBoundLogger.aexception()
now support positional argument formatting like the rest of the methods.#531
structlog.processors.format_exc_info()
andstructlog.dev.ConsoleRenderer
do not crash anymore when told to format a non-existent exception.#533
v23.1.0
Compare Source
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 overrides
FORCE_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 or
True
.#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
v22.3.0
Compare Source
Changed
FilteringBoundLogger
(used by default) is now only attempted if positional arguments are passed.This prevents crashes if something different than a string is passed for the event argument.
#475
Fixed
#478
v22.2.0
Compare Source
Deprecated
structlog.__version__
).Please use
importlib.metadata
instead (for Python 3.7: the importlib-metadata PyPI package).structlog.types
module is now deprecated in favor of thestructlog.typing
module.It seems like the Python typing community is settling on this name.
Added
FilteringBoundLogger
(used by default) now allows for string interpolation using positional arguments:#454
FilteringBoundLogger
now also has support for asyncio-based logging.Instead of a wrapper class like
structlog.stdlib.AsyncBoundLogger
, async equivalents have been added for all logging methods.So instead of
log.info("hello")
you can also writeawait log.ainfo("hello")
in async functions and methods.This seems like the better approach and if it's liked by the community,
structlog.stdlib.BoundLogger
will get those methods too.#457
Changed
Have a look if you haven't lately!
Especially the graphs in the standard library chapter have proven valuable to many.
Fixed
:
) for seconds.v22.1.0
Compare Source
Removed
Deprecated
The entire
structlog.threadlocal
module is deprecated.Please use the primitives from
structlog.contextvars
instead.If you're using the modern APIs (
bind_threadlocal()
/merge_threadlocal()
) it's enough to replace them 1:1 with theircontextvars
counterparts.The old approach around
wrap_dict()
has been discouraged for a while.Currently there are no concrete plans to remove the module, but no patches against it will be accepted from now on.
#409
Added
structlog.processors.StackInfoRenderer
now has an additional_ignores parameter that allows you to filter out your own logging layer.#396
structlog.WriteLogger
, a faster – but more low-level – alternative tostructlog.PrintLogger
.It works the way
PrintLogger
used to work in previous versions.#403
#404
structlog.make_filtering_bound_logger()
-returned loggers now also have alog()
method to match thestructlog.stdlib.BoundLogger
signature closer.#413
structlog.tracebacks
module,and most notably the
structlog.tracebacks.ExceptionDictTransformer
which can be used with the newstructlog.processors.ExceptionRenderer
to render JSON tracebacks.#407
structlog.stdlib.recreate_defaults(log_level=logging.NOTSET)
that recreates structlog's defaults on top of standard library'slogging
.It optionally also configures
logging
to log to standard out at the passed log level.#428
structlog.processors.EventRenamer
allows you to rename the hitherto hard-coded event dict keyevent
to something else.Optionally, you can rename another key to
event
at the same time, too.So adding
EventRenamer(to="msg", replace_by="_event")
to your processor pipeline will rename the standardevent
key tomsg
and then rename the_event
key toevent
.This allows you to use the
event
key in your own log files and to have consistent log message keys across languages.structlog.dev.ConsoleRenderer(event_key="event")
now allows to customize the name of the key that is used for the log message.Changed
structlog.make_filtering_bound_logger()
now returns a method with the same signature for all log levels, whether they are active or not.This ensures that invalid calls to inactive log levels are caught immediately and don't explode once the log level changes.
#401
structlog.PrintLogger
– that is used by default – now usesprint()
for printing, making it a better citizen for interactive terminal applications.#399
structlog.testing.capture_logs
now works for already initialized bound loggers.#408
structlog.processors.format_exc_info()
is no longer a function, but an instance ofstructlog.processors.ExceptionRenderer
.Its behavior has not changed.
#407
structlog.contextvars.merge_contextvars
processor.That means you can use
structlog.contextvars
features without configuring structlog.Fixed
bind
,unbind
,try_unbind
andnew
methods in theFilteringBoundLogger
Protocol.This makes it easier to use objects of type
FilteringBoundLogger
in a typed context.#392
sys.stdout
s are now handled more gracefully byConsoleRenderer
(that's used by default).#404
structlog.stdlib.render_to_log_kwargs()
now correctly handles the presence ofexc_info
,stack_info
, andstackLevel
in the event dictionary.They are transformed into proper keyword arguments instead of putting them into the
extra
dictionary.#424,
#427
v21.5.0
Compare Source
Added
structlog.processors.LogfmtRenderer
processor to render log lines using the logfmt format.#376
structlog.stdlib.ExtraAdder
processor that adds extra attributes oflogging.LogRecord
objects to the event dictionary.This processor can be used for adding data passed in the
extra
parameter of thelogging
module's log methods to the event dictionary.#209,
#377
structlog.processor.CallsiteParameterAdder
processor that adds parameters of the callsite that an event dictionary originated from to the event dictionary.This processor can be used to enrich events dictionaries with information such as the function name, line number and filename that an event dictionary originated from.
#380
v21.4.0
Compare Source
Added
structlog.threadlocal.bound_threadlocal
andstructlog.contextvars.bound_contextvars
decorator/context managers to temporarily bind key-value pairs to a thread-local and context-local context.#371
Fixed
PYTHONOPTIMIZE=2
orpython -OO
).
#373
v21.3.0
Compare Source
Added
structlog.dev.ConsoleRenderer
now hassort_keys
boolean parameter that allows to disable the sorting of keys on output.#358
Changed
Users shouldn't notice a difference, but (re-)packagers might.
structlog.stdlib.AsyncBoundLogger
now determines the running loop when logging, not on instantiation.That has a minor performance impact, but makes it more robust when loops change (for example,
aiohttp.web.run_app()
), or you want to usesync_bl
before a loop has started.Fixed
structlog.processors.TimeStamper
now works well with FreezeGun even when it gets applied before the loggers are configured.#364
structlog.stdlib.ProcessorFormatter
now has a processors argument that allows to define a processor chain to run over all log entries.Before running the chain, two additional keys are added to the event dictionary:
_record
and_from_structlog
.With them it's possible to extract information from
logging.LogRecord
s and differentiate between structlog andlogging
log entries while processing them.The old processor (singular) parameter is now deprecated, but no plans exist to remove it.
#365
v21.2.0
Compare Source
Added
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 over better-exceptions if both are present.
This only works if
format_exc_info
is absent in the processor chain.#330,
#349
The final processor can now return a
bytearray
(additionally tostr
andbytes
).#344
Changed
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 eitherrich
orbetter-exceptions
is installed), a warning will be raised and the exception will be rendered without prettification.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
Fixed
sys.stdout
isNone
(for example, when running usingpythonw
). #313Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Never, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.