From 29d90efd1b918e293ec4814c78d142d8fc076f51 Mon Sep 17 00:00:00 2001 From: Martynov Maxim Date: Sat, 23 Dec 2023 21:52:21 +0300 Subject: [PATCH] Ignore missing fields during rename --- src/pythonjsonlogger/jsonlogger.py | 4 ++-- tests/test_jsonlogger.py | 13 ++++++++----- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/pythonjsonlogger/jsonlogger.py b/src/pythonjsonlogger/jsonlogger.py index 519a64d..d22a4ea 100644 --- a/src/pythonjsonlogger/jsonlogger.py +++ b/src/pythonjsonlogger/jsonlogger.py @@ -229,8 +229,8 @@ def add_fields( def _perform_rename_log_fields(self, log_record): for old_field_name, new_field_name in self.rename_fields.items(): - log_record[new_field_name] = log_record[old_field_name] - del log_record[old_field_name] + if old_field_name in log_record: + log_record[new_field_name] = log_record.pop(old_field_name) def process_log_record(self, log_record): """ diff --git a/tests/test_jsonlogger.py b/tests/test_jsonlogger.py index af369d2..e4f0d53 100644 --- a/tests/test_jsonlogger.py +++ b/tests/test_jsonlogger.py @@ -56,21 +56,24 @@ def test_rename_base_field(self): fr = jsonlogger.JsonFormatter(rename_fields={'message': '@message'}) self.log_handler.setFormatter(fr) - msg = "testing logging format" + msg = "testing logging rename" self.log.info(msg) log_json = json.loads(self.buffer.getvalue()) + self.assertNotIn("message", log_json) + self.assertIn("@message", log_json) self.assertEqual(log_json["@message"], msg) def test_rename_nonexistent_field(self): fr = jsonlogger.JsonFormatter(rename_fields={'nonexistent_key': 'new_name'}) self.log_handler.setFormatter(fr) - stderr_watcher = StringIO() - sys.stderr = stderr_watcher - self.log.info("testing logging rename") + msg = "testing logging rename" + self.log.info(msg) + log_json = json.loads(self.buffer.getvalue()) - self.assertTrue("KeyError: 'nonexistent_key'" in stderr_watcher.getvalue()) + self.assertNotIn("nonexistent_key", log_json) + self.assertNotIn("new_name", log_json) def test_add_static_fields(self): fr = jsonlogger.JsonFormatter(static_fields={'log_stream': 'kafka'})