Skip to content

Commit 4adb504

Browse files
fix(logger): child logger must respect log level (#5950)
Child logger must respect log level
1 parent 8d5cf08 commit 4adb504

File tree

2 files changed

+20
-1
lines changed

2 files changed

+20
-1
lines changed

Diff for: aws_lambda_powertools/logging/logger.py

+5-1
Original file line numberDiff line numberDiff line change
@@ -285,7 +285,11 @@ def _init_logger(
285285
# b) different sampling mechanisms
286286
# c) multiple messages from being logged as handlers can be duplicated
287287
is_logger_preconfigured = getattr(self._logger, LOGGER_ATTRIBUTE_PRECONFIGURED, False)
288-
if self.child or is_logger_preconfigured:
288+
if self.child:
289+
self.setLevel(log_level)
290+
return
291+
292+
if is_logger_preconfigured:
289293
return
290294

291295
self.setLevel(log_level)

Diff for: tests/functional/logger/required_dependencies/test_logger.py

+15
Original file line numberDiff line numberDiff line change
@@ -1217,3 +1217,18 @@ def remove_keys(self, keys: Iterable[str]) -> None:
12171217
# THEN the context keys should not persist
12181218
current_keys = logger.get_current_keys()
12191219
assert current_keys == {}
1220+
1221+
1222+
def test_logger_change_level_child_logger(stdout, service_name):
1223+
# GIVEN a new Logger and child Logger
1224+
logger = Logger(service=service_name, stream=stdout)
1225+
child_logger = Logger(service=service_name, child=True, stream=stdout, level="DEBUG")
1226+
1227+
# WHEN we emit logs for both in DEBUG level
1228+
logger.debug("PARENT")
1229+
child_logger.debug("CHILD")
1230+
1231+
# THEN only child log must emit log due to level
1232+
logs = list(stdout.getvalue().strip().split("\n"))
1233+
assert len(logs) == 1
1234+
assert "service" in logs[0]

0 commit comments

Comments
 (0)