|
6 | 6 | from enum import Enum
|
7 | 7 |
|
8 | 8 | import pytest
|
| 9 | +from pytest_mock import MockerFixture |
9 | 10 |
|
10 | 11 | from aws_lambda_powertools import Logger
|
11 | 12 | from aws_lambda_powertools.logging import formatter, utils
|
@@ -195,6 +196,35 @@ def test_copy_config_to_ext_loggers_should_not_break_append_keys(stdout, log_lev
|
195 | 196 | powertools_logger.append_keys(key="value")
|
196 | 197 |
|
197 | 198 |
|
| 199 | +def test_copy_config_to_ext_loggers_child_loggers_work(stdout): |
| 200 | + # GIVEN powertools logger AND child initialized AND |
| 201 | + |
| 202 | + # GIVEN Loggers are initialized |
| 203 | + # create child logger before parent to mimick |
| 204 | + # importing logger from another module/file |
| 205 | + # as loggers are created in global scope |
| 206 | + service = service_name() |
| 207 | + child = Logger(stream=stdout, service=service, child=True) |
| 208 | + parent = Logger(stream=stdout, service=service) |
| 209 | + |
| 210 | + # WHEN a child Logger adds an additional key AND parent logger adds additional key |
| 211 | + child.structure_logs(append=True, customer_id="value") |
| 212 | + parent.structure_logs(append=True, user_id="value") |
| 213 | + # WHEN configuration copied from powertools logger |
| 214 | + # AND powertools logger and child logger used |
| 215 | + utils.copy_config_to_registered_loggers(source_logger=parent) |
| 216 | + parent.warning("Logger message") |
| 217 | + child.warning("Child logger message") |
| 218 | + |
| 219 | + # THEN payment_id key added to both powertools logger and child logger |
| 220 | + parent_log, child_log = capture_multiple_logging_statements_output(stdout) |
| 221 | + assert "customer_id" in parent_log |
| 222 | + assert "customer_id" in child_log |
| 223 | + assert "user_id" in parent_log |
| 224 | + assert "user_id" in child_log |
| 225 | + assert child.parent.name == service |
| 226 | + |
| 227 | + |
198 | 228 | def test_copy_config_to_ext_loggers_no_duplicate_logs(stdout, logger, log_level):
|
199 | 229 | # GIVEN an root logger, external logger and powertools logger initialized
|
200 | 230 |
|
|
0 commit comments