./sysutils/py-structlog, Painless structural logging

[ CVSweb ] [ Homepage ] [ RSS ] [ Required by ] [ Add to tracker ]


Branch: CURRENT, Version: 25.5.0, Package name: py313-structlog-25.5.0, Maintainer: pkgsrc-users

structlog makes structured logging in Python easy by augmenting your existing
logger. It allows you to split your log entries up into key/value pairs and
build them incrementally without annoying boilerplate code.


Required to run:
[devel/py-setuptools] [lang/py-six] [lang/python37]

Required to build:
[pkgtools/cwrappers]

Master sites:

Filesize: 1426.592 KB

Version history: (Expand)


CVS history: (Expand)


   2025-10-30 16:23:21 by Adam Ciarcinski | Files touched by this commit (2) | Package updated
Log message:
py-structlog: updated to 25.5.0

25.5.0

Deprecated

- `structlog.dev.ConsoleRenderer()`'s *pad_event* argument has been renamed to \ 
*pad_event_to* to differentiate it from the boolean *pad_level* argument.
  *pad_event* is now deprecated.

Added

- Added `structlog.dev.ConsoleRenderer.get_active()` that returns the currently \ 
active `structlog.dev.ConsoleRenderer()`.
- `structlog.dev.ConsoleRenderer()` now supports setting the \ 
`exception_formatter` attribute.

  You can now disable the pretty-printing of exceptions by setting it to \ 
`structlog.dev.plain_traceback`:

  ```python
  cr = structlog.dev.ConsoleRenderer.get_active()
  cr.exception_formatter = structlog.dev.plain_traceback
  ```

  Same goes for *sort_keys*, *columns*, *colors*, *force_colors*, \ 
*level_styles*, *pad_event_to*, *event_key*, *timestamp_key*, and \ 
*repr_native_str*.

- Added `structlog.dev.ConsoleRenderer.get_default_column_styles()` for reuse \ 
the default column styles.
- `structlog.testing.capture_logs()` now optionally accepts *processors* to \ 
apply before capture.
- `structlog.dev.RichTracebackFormatter` now exposes the upstream *code_width* \ 
parameter.
  Default *width* is now `None` for full terminal width.
  Full terminal width is now handled by Rich itself, bringing support for reflow \ 
and `COLUMN` environment variable.
  Passing `-1` for *width* is now deprecated and automatically replaced by `None`.
- Native loggers now allow the passing of a dictionary for dictionary-based \ 
interpolation `log.info("hello %(name)s!", {"name": \ 
"world"})`.
- On Python 3.11+, `structlog.processors.CallsiteParameterAdder` now supports \ 
`CallsiteParameter.QUAL_NAME` that adds the qualified name of the callsite, \ 
including scope and class names.
  This is only available for *structlog*-originated events since the standard \ 
library has no equivalent.

- `structlog.stdlib.LoggerFactory` now supports the *stacklevel* parameter.

Changed

- `structlog.dev.rich_traceback()` now throws a more helpful error when Rich is \ 
missing.

Fixed

- `structlog.processors.MaybeTimeStamper` now respects the *key* argument when \ 
determining whether to overwrite the timestamp field.
- `structlog.tracebacks.extract()` no longer raises a `RecursionError` when the \ 
cause chain of an exception contains itself.
- Default config now respects `FORCE_COLOR` on Windows.
   2025-08-16 09:04:57 by Adam Ciarcinski | Files touched by this commit (2) | Package updated
Log message:
py-structlog: updated to 25.4.0

25.4.0

Added

- Support for Python 3.14 and Python 3.13.4.

  Python 3.14 has an backwards-incompatible change to \ 
`logging.Logger.isEnabledFor()` (it now always returns False if a log entry is \ 
in flight) that has been backported to 3.13.4 (expected on 2025-06-03).
  It mainly affects `structlog.stdlib.filter_by_level()`.

- `structlog.tracebacks` now handles [exception \ 
groups](https://docs.python.org/3/library/exceptions.html#exception-groups).
  `structlog.tracebacks.Stack` has two new fields, `is_group: bool` and \ 
`exceptions: list[Trace]`.
  This works similarly to what Rich v14.0.0 does.

Fixed

- `structlog.processors.ExceptionPrettyPrinter` now respects the \ 
*exception_formatter* arguments instead of always using the default formatter.
   2025-05-10 13:14:32 by Adam Ciarcinski | Files touched by this commit (2) | Package updated
Log message:
py-structlog: updated to 25.3.0

25.3.0

Fixed
- `structlog.processors.TimeStamper` now again uses timestamps using UTC for \ 
custom format strings when `utc=True`.
   2025-03-12 07:04:36 by Adam Ciarcinski | Files touched by this commit (2) | Package updated
Log message:
py-structlog: updated to 25.2.0

25.2.0

Added
- `structlog.tracebacks.Stack` now includes an `exc_notes` field reflecting the \ 
notes attached to the exception.

Changed
- `structlog.stdlib.BoundLogger`'s binding-related methods now also return `Self`.
- `structlog.processors.TimeStamper` now produces internally timezone-aware \ 
`datetime` objects.
  Default output hasn't changed, but you can now use `%z` in your *fmt* string.

Fixed
-  Expose `structlog.dev.RichTracebackFormatter` for imports.
-  Expose `structlog.processors.LogfmtRenderer` for imports.
   2025-01-29 22:38:08 by Adam Ciarcinski | Files touched by this commit (2) | Package updated
Log message:
py-structlog: updated to 25.1.0

25.1.0

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 to `logging`.
  With it, you do not need to add \ 
`structlog.stdlib.PositionalArgumentsFormatter` processor to format positional \ 
arguments from *structlog* loggers.

- Native loggers now have `is_enabled_for()` and `get_effective_level()` methods \ 
that mirror the behavior of the standard library's \ 
`logging.Logger.isEnabledFor()` and `logging.Logger.getEffectiveLevel()`.

Changed

- `structlog.typing.BindableLogger` protocol now returns `Self` instead of \ 
`BindableLogger`.
  This adds a dependency on \ 
[*typing-extensions*](https://pypi.org/project/typing-extensions/) for Pythons \ 
older than 3.11.

- `structlog.dev.ConsoleRenderer` will quote string value with special characters.

- `structlog.stdlib.recreate_defaults()` now also adds \ 
`structlog.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()`.

- Instantiating `structlog.dev.ConsoleRenderer` does not mutate the passed \ 
*styles* dict anymore.

- 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()` or `critical()`.

- `structlog.tracebacks.ExceptionDictTransformer` now actually accepts `None` \ 
for `locals_max_length` and `locals_max_string`.
   2024-08-09 20:59:31 by Adam Ciarcinski | Files touched by this commit (2) | Package updated
Log message:
py-structlog: updated to 24.4.0

24.4.0

Changed

No code changes since 24.3.0

24.3.0

Added

- Restore feature parity between `structlog.traceback.ExceptionDictTransformer` \ 
and Rich's traceback extractor:

 - When displaying locals, use Rich for formatting if it is available.
 - When displaying locals, call `repr()` on strings, too (improves handling of \ 
`SecretStr` implementations).
 - Add `locals_max_length` config option
 - Add `locals_hide_sunder` config option
 - Add `locals_hide_dunder` config option
 - Add `suppress` config option
   2024-06-07 22:59:35 by Adam Ciarcinski | Files touched by this commit (2) | Package updated
Log message:
py-structlog: updated to 24.2.0

24.2.0

Added

- It is now possible to disable log level-padding in \ 
`structlog.dev.LogLevelColumnFormatter` and `structlog.dev.ConsoleRenderer`.
- The `structlog.processors.CallsiteParameterAdder` can now be pickled.
- `structlog.processors.CallsiteParameterAdder` now also works with \ 
`structlog.stdlib.BoundLogger`'s non-standard async methods (`ainfo()`, and so \ 
forth)

Changed

- `structlog.processors.LogfmtRenderer` now escapes newlines.
- `structlog.processors.LogfmtRenderer` now escapes backslashes and double quotes.
- `structlog.processors.CallsiteParameterAdder` has been optimized to be about \ 
2x faster.

Fixed

- `structlog.stdlib.render_to_log_kwargs` now correctly passes stacklevel as a \ 
kwarg to stdlib logging.
   2024-01-08 20:56:14 by Adam Ciarcinski | Files touched by this commit (3) | Package updated
Log message:
py-structlog: updated to 24.1.0

24.1.0

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.

- Don't ignore the `width` argument of `RichTracebackFormatter`.

23.3.0

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.

- Async log methods (those starting with an `a`) now also support the collection \ 
of callsite information using `structlog.processors.CallsiteParameterAdder`.

Changed

- `structlog.stdlib.recreate_defaults()` now also adds \ 
`structlog.stdlib.add_logger_name` to the processors.
 Check out the [updated \ 
screenshot](https://raw.githubusercontent.com/hynek/structlog/main/docs/_static/console_renderer.png)!

Fixed

- The return value from `get_logger()` (a `BoundLoggerLazyProxy`) now passes \ 
`isinstance`-checks against `structlog.typing.BindableLogger` on Python 3.12.

- `structlog.threadlocal.tmp_bind()` now also works with `BoundLoggerLazyProxy` \ 
(in other words: before anything is bound to a bound logger).

- stdlib: `ProcessorFormatter` can now be told to not render the log record \ 
message using `getMessage` and just `str(record.msg)` instead.

- stdlib: `structlog.stdlib.BoundLogger.exception()`'s handling \ 
of`LogRecord.exc_info` is now set consistent with `logging`.