./sysutils/py-structlog, Painless structural logging

[ Image CVSweb ] [ Image Homepage ] [ Image RSS ] [ Image Required by ]


Branch: CURRENT, Version: 26.1.0, Package name: py313-structlog-26.1.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: 1425.665 KB

Version history: (Expand)


CVS history: (Expand)


   2026-06-28 17:25:23 by Adam Ciarcinski | Files touched by this commit (2) | Package updated
Log message:
py-structlog: updated to 26.1.0

26.1.0

Removed

- Python 3.8 and 3.9 support.

Deprecated

- Support for *better-exceptions* is deprecated and will be removed within a year.
  Use our Rich integration or copy-paste the [one line of code you \ 
need](https://github.com/hynek/structlog/blob/2c059a0dc029d9370e1e4a6e9683063205bbb68f/src/structlog/dev.py#L488-L498).

Added

- Python 3.15 support.

- `structlog.dev.rich_monochrome_traceback` for Rich-based monochrome exception \ 
rendering and add support for it throughout `structlog.dev.ConsoleRenderer` when \ 
the user asks for no colors.

- `structlog.BytesLogger` now has a `name` attribute which allows you to use it \ 
with the `structlog.stdlib.add_logger_name()` processor *without* using the \ 
standard library integration.

- `structlog.processors.CallsiteParameterAdder` now supports \ 
`CallsiteParameter.QUAL_MODULE` that adds the qualified import name of the \ 
module of the callsite, or `__main__` if the module is the entry point.
  This is only available for *structlog*-originated events since the standard \ 
library has no equivalent (except for the convention of setting the logger's \ 
name to `__name__`).

- `structlog.stdlib.BoundLogger` now has `is_enabled_for()` and \ 
`get_effective_level()` methods that are snake_case aliases for its \ 
`isEnabledFor()` and `getEffectiveLevel()` methods.
  This makes it more compatible with the native \ 
`structlog.typing.FilteringBoundLogger`, so you can swap configurations without \ 
changing your call sites.

Changed

- `structlog.dev.ConsoleRenderer` does not warn anymore when the `exception` key \ 
has a rendered value despite having a fancy formatter configured.

Fixed

- `structlog.BytesLogger`, `structlog.PrintLogger`, and `structlog.WriteLogger` \ 
now hold *weak* references to the files they use for output.
  This prevents their leakage in long-running processes that open many logfiles, \ 
such as task executors that create a per-task `BytesLogger` or `WriteLogger`.

- `structlog.WriteLogger` is usable after unpickling.

- `structlog.processors.CallsiteParameterAdder` now reports the calling thread's \ 
id and name for async log methods, instead of the thread from the executor pool \ 
that runs the underlying sync logger.
   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.