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'})