Skip to content

Commit 0d227b7

Browse files
committed
feat(logger): add removeFilter
1 parent 2e1dfb6 commit 0d227b7

File tree

2 files changed

+15
-7
lines changed

2 files changed

+15
-7
lines changed

aws_lambda_powertools/logging/logger.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ def _is_cold_start() -> bool:
6767
return cold_start
6868

6969

70-
class Logger(logging.Logger):
70+
class Logger:
7171
"""Creates and setups a logger to format statements in JSON.
7272
7373
Includes service name and any additional key=value into logs
@@ -686,6 +686,9 @@ def addHandler(self, handler: logging.Handler) -> None:
686686
def addFilter(self, filter: logging._FilterType) -> None: # noqa: A002 # filter built-in usage
687687
return self._logger.addFilter(filter)
688688

689+
def removeFilter(self, filter: logging._FilterType) -> None: # noqa: A002 # filter built-in usage
690+
return self._logger.removeFilter(filter)
691+
689692
@property
690693
def registered_handler(self) -> logging.Handler:
691694
"""Convenience property to access the first logger handler"""

tests/functional/test_logger.py

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1079,21 +1079,26 @@ def test_log_level_advanced_logging_controler_warning_different_log_levels_using
10791079
assert logger.log_level == logging.INFO
10801080

10811081

1082-
def test_logger_add_filter(stdout, service_name):
1082+
def test_logger_add_remove_filter(stdout, service_name):
10831083
# GIVEN a Logger with a custom logging filter
1084-
class MyFilter(logging.Filter):
1084+
class ApiKeyFilter(logging.Filter):
10851085
def filter(self, record):
10861086
if getattr(record, "api_key", None):
10871087
record.api_key = "REDACTED"
10881088

10891089
return True
10901090

1091+
redact_api_key_filter = ApiKeyFilter()
10911092
logger = Logger(service=service_name, stream=stdout)
1092-
logger.addFilter(MyFilter())
1093+
logger.addFilter(redact_api_key_filter)
10931094

10941095
# WHEN a new log statement is issued
1095-
logger.info("log", api_key=secrets.token_urlsafe())
1096+
# AND another log statement is issued after filter is removed
1097+
logger.info("filtered", api_key=secrets.token_urlsafe())
1098+
logger.removeFilter(redact_api_key_filter)
1099+
logger.info("unfiltered", api_key=secrets.token_urlsafe())
10961100

10971101
# THEN logging filter should be called and mutate the log record accordingly
1098-
log = capture_logging_output(stdout)
1099-
assert log["api_key"] == "REDACTED"
1102+
log = capture_multiple_logging_statements_output(stdout)
1103+
assert log[0]["api_key"] == "REDACTED"
1104+
assert log[1]["api_key"] != "REDACTED"

0 commit comments

Comments
 (0)