Skip to content

powertools logger set as child has no append_keys method #1016

Closed as not planned
@whardier

Description

@whardier

Chicken/egg problem with parent logger needing to be instantiated before child logger is able to utilize common methods like append_keys.

What were you trying to accomplish?

Expected Behavior

append_keys provides structured information that the powertools logger unions into an output.

Current Behavior

A logger can be set up with child=True but end up with a different method interface.

Current workaround is to avoid append_keys and only use extra as part of .debug/.info/etc... as that will go nowhere when a parent logger isn't instanciated.

Possible Solution

Open to suggestion

Steps to Reproduce (for bugs)

Various tests:

Python 3.9.9+ (heads/3.9:2d4049d, Jan  1 2022, 00:54:45)
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from aws_lambda_powertools.logging.logger import Logger
>>> child_logger = Logger(child=True)
>>> child_logger.append_keys(boom=1)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/spencersr/src/everyonesocial/es-billing-service/.venv/lib/python3.9/site-packages/aws_lambda_powertools/logging/logger.py", line 359, in append_keys
    self.registered_formatter.append_keys(**additional_keys)
  File "/home/spencersr/src/everyonesocial/es-billing-service/.venv/lib/python3.9/site-packages/aws_lambda_powertools/logging/logger.py", line 373, in registered_formatter
    return self.registered_handler.formatter  # type: ignore
  File "/home/spencersr/src/everyonesocial/es-billing-service/.venv/lib/python3.9/site-packages/aws_lambda_powertools/logging/logger.py", line 368, in registered_handler
    return handlers[0]
IndexError: list index out of range
>>>
Python 3.9.9+ (heads/3.9:2d4049d, Jan  1 2022, 00:54:45)
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from aws_lambda_powertools.logging.logger import Logger
>>> logger = Logger()
>>> child_logger = Logger(child=True)
>>> child_logger.append_keys(boom=0)
>>>

Environment

  • Powertools version used: 1.24.2
  • Packaging format (Layers, PyPi): PyPi
  • AWS Lambda function runtime: Any
  • Debugging logs See tests above

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    Status

    Closed

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions