Skip to content
This repository was archived by the owner on Dec 21, 2024. It is now read-only.

Commit 8607625

Browse files
author
Cosimo Meli
committed
feat: add static_fields arg to add fields to logs
1 parent e228788 commit 8607625

File tree

2 files changed

+16
-0
lines changed

2 files changed

+16
-0
lines changed

src/pythonjsonlogger/jsonlogger.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ def __init__(self, *args, **kwargs):
9090
the formatted string
9191
:param rename_fields: an optional dict, used to rename field names in the output.
9292
Rename message to @message: {'message': '@message'}
93+
:param static_fields: an optional dict, used to add fields with static values to all logs
9394
:param json_indent: indent parameter for json.dumps
9495
:param json_ensure_ascii: ensure_ascii parameter for json.dumps
9596
:param reserved_attrs: an optional list of fields that will be skipped when
@@ -107,6 +108,7 @@ def __init__(self, *args, **kwargs):
107108
self.json_ensure_ascii = kwargs.pop("json_ensure_ascii", True)
108109
self.prefix = kwargs.pop("prefix", "")
109110
self.rename_fields = kwargs.pop("rename_fields", {})
111+
self.static_fields = kwargs.pop("static_fields", {})
110112
reserved_attrs = kwargs.pop("reserved_attrs", RESERVED_ATTRS)
111113
self.reserved_attrs = dict(zip(reserved_attrs, reserved_attrs))
112114
self.timestamp = kwargs.pop("timestamp", False)
@@ -155,6 +157,7 @@ def add_fields(self, log_record, record, message_dict):
155157
log_record[self.rename_fields[field]] = record.__dict__.get(field)
156158
else:
157159
log_record[field] = record.__dict__.get(field)
160+
log_record.update(self.static_fields)
158161
log_record.update(message_dict)
159162
merge_record_extra(record, log_record, reserved=self._skip_fields)
160163

tests/tests.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,19 @@ def testRenameBaseField(self):
5252

5353
self.assertEqual(logJson["@message"], msg)
5454

55+
def testAddStaticFields(self):
56+
fr = jsonlogger.JsonFormatter(static_fields={'log_stream': 'kafka'})
57+
58+
self.logHandler.setFormatter(fr)
59+
60+
msg = "testing static fields"
61+
self.logger.info(msg)
62+
logJson = json.loads(self.buffer.getvalue())
63+
64+
self.assertEqual(logJson["log_stream"], "kafka")
65+
self.assertEqual(logJson["message"], msg)
66+
67+
5568
def testFormatKeys(self):
5669
supported_keys = [
5770
'asctime',

0 commit comments

Comments
 (0)