@@ -1079,21 +1079,26 @@ def test_log_level_advanced_logging_controler_warning_different_log_levels_using
1079
1079
assert logger .log_level == logging .INFO
1080
1080
1081
1081
1082
- def test_logger_add_filter (stdout , service_name ):
1082
+ def test_logger_add_remove_filter (stdout , service_name ):
1083
1083
# GIVEN a Logger with a custom logging filter
1084
- class MyFilter (logging .Filter ):
1084
+ class ApiKeyFilter (logging .Filter ):
1085
1085
def filter (self , record ):
1086
1086
if getattr (record , "api_key" , None ):
1087
1087
record .api_key = "REDACTED"
1088
1088
1089
1089
return True
1090
1090
1091
+ redact_api_key_filter = ApiKeyFilter ()
1091
1092
logger = Logger (service = service_name , stream = stdout )
1092
- logger .addFilter (MyFilter () )
1093
+ logger .addFilter (redact_api_key_filter )
1093
1094
1094
1095
# 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 ())
1096
1100
1097
1101
# 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