mirror of
https://github.com/GSA/notifications-api.git
synced 2026-05-02 23:30:15 -04:00
hmmm
This commit is contained in:
@@ -70,6 +70,7 @@ def configure_handler(handler, app, formatter):
|
|||||||
handler.addFilter(AppNameFilter(app.config["NOTIFY_APP_NAME"]))
|
handler.addFilter(AppNameFilter(app.config["NOTIFY_APP_NAME"]))
|
||||||
handler.addFilter(RequestIdFilter())
|
handler.addFilter(RequestIdFilter())
|
||||||
handler.addFilter(ServiceIdFilter())
|
handler.addFilter(ServiceIdFilter())
|
||||||
|
handler.addFilter(PIIFilter())
|
||||||
|
|
||||||
return handler
|
return handler
|
||||||
|
|
||||||
@@ -116,26 +117,7 @@ class ServiceIdFilter(logging.Filter):
|
|||||||
return record
|
return record
|
||||||
|
|
||||||
|
|
||||||
class JSONFormatter(BaseJSONFormatter):
|
class PIIFilter(logging.Filter):
|
||||||
def process_log_record(self, log_record):
|
|
||||||
rename_map = {
|
|
||||||
"asctime": "time",
|
|
||||||
"request_id": "requestId",
|
|
||||||
"app_name": "application",
|
|
||||||
"service_id": "service_id",
|
|
||||||
}
|
|
||||||
for key, newkey in rename_map.items():
|
|
||||||
log_record[newkey] = log_record.pop(key)
|
|
||||||
log_record["logType"] = "application"
|
|
||||||
try:
|
|
||||||
log_record["message"] = log_record["message"].format(**log_record)
|
|
||||||
except (KeyError, IndexError) as e:
|
|
||||||
logger.exception("failed to format log message: {} not found".format(e))
|
|
||||||
return log_record
|
|
||||||
|
|
||||||
|
|
||||||
class PIIFormatter(BaseJSONFormatter):
|
|
||||||
|
|
||||||
def scrub(self, msg):
|
def scrub(self, msg):
|
||||||
# Eventually we want to scrub all messages in all logs for phone numbers
|
# Eventually we want to scrub all messages in all logs for phone numbers
|
||||||
# and email addresses, masking them. Ultimately this will probably get
|
# and email addresses, masking them. Ultimately this will probably get
|
||||||
@@ -154,9 +136,24 @@ class PIIFormatter(BaseJSONFormatter):
|
|||||||
msg = msg.replace(email, f"XXXXX{email[-10:]}")
|
msg = msg.replace(email, f"XXXXX{email[-10:]}")
|
||||||
return msg
|
return msg
|
||||||
|
|
||||||
|
def filter(self, record):
|
||||||
|
record.msg = self.scrub(record.msg)
|
||||||
|
return record
|
||||||
|
|
||||||
|
|
||||||
|
class JSONFormatter(BaseJSONFormatter):
|
||||||
def process_log_record(self, log_record):
|
def process_log_record(self, log_record):
|
||||||
|
rename_map = {
|
||||||
|
"asctime": "time",
|
||||||
|
"request_id": "requestId",
|
||||||
|
"app_name": "application",
|
||||||
|
"service_id": "service_id",
|
||||||
|
}
|
||||||
|
for key, newkey in rename_map.items():
|
||||||
|
log_record[newkey] = log_record.pop(key)
|
||||||
|
log_record["logType"] = "application"
|
||||||
try:
|
try:
|
||||||
log_record["message"] = self.scrub(log_record["message"])
|
log_record["message"] = log_record["message"].format(**log_record)
|
||||||
except (KeyError, IndexError, ValueError) as e:
|
except (KeyError, IndexError) as e:
|
||||||
logger.exception(f"failed to scrub log message: {e}")
|
logger.exception("failed to format log message: {} not found".format(e))
|
||||||
return log_record
|
return log_record
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ def test_base_json_formatter_contains_service_id():
|
|||||||
assert service_id_filter.filter(record).service_id == "notify-admin"
|
assert service_id_filter.filter(record).service_id == "notify-admin"
|
||||||
|
|
||||||
|
|
||||||
def test_scrub():
|
def test_pii_filter():
|
||||||
record = builtin_logging.LogRecord(
|
record = builtin_logging.LogRecord(
|
||||||
name="log thing",
|
name="log thing",
|
||||||
level="info",
|
level="info",
|
||||||
@@ -61,8 +61,6 @@ def test_scrub():
|
|||||||
exc_info=None,
|
exc_info=None,
|
||||||
args=None,
|
args=None,
|
||||||
)
|
)
|
||||||
|
pii_filter = logging.PIIFilter()
|
||||||
assert (
|
x = pii_filter.filter(record)
|
||||||
json.loads(logging.PIIFormatter().format(record))["message"]
|
assert pii_filter.filter(record).msg == "phone1: 1XXXXX55555, phone2: 1XXXXX55554, email1: XXXXXe@fake.gov, email2: XXXXX2.fake.gov"
|
||||||
== "phone1: 1XXXXX55555, phone2: 1XXXXX55554, email1: XXXXXe@fake.gov, email2: XXXXX2.fake.gov"
|
|
||||||
)
|
|
||||||
|
|||||||
Reference in New Issue
Block a user