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

Commit 8bc865d

Browse files
committed
add ensure_ascii parameter to propagate it to json.dumps
1 parent e356f41 commit 8bc865d

File tree

2 files changed

+21
-1
lines changed

2 files changed

+21
-1
lines changed

src/pythonjsonlogger/jsonlogger.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,11 +60,14 @@ def __init__(self, *args, **kwargs):
6060
that will be used to serialize the log record.
6161
:param prefix: an optional string prefix added at the beginning of
6262
the formatted string
63+
:param json_indent: indent parameter for json.dumps
64+
:param json_ensure_ascii: ensure_ascii parameter for json.dumps
6365
"""
6466
self.json_default = kwargs.pop("json_default", None)
6567
self.json_encoder = kwargs.pop("json_encoder", None)
6668
self.json_serializer = kwargs.pop("json_serializer", json.dumps)
6769
self.json_indent = kwargs.pop("json_indent", None)
70+
self.json_ensure_ascii = kwargs.pop("json_ensure_ascii", True)
6871
self.prefix = kwargs.pop("prefix", "")
6972
#super(JsonFormatter, self).__init__(*args, **kwargs)
7073
logging.Formatter.__init__(self, *args, **kwargs)
@@ -116,7 +119,8 @@ def jsonify_log_record(self, log_record):
116119
return self.json_serializer(log_record,
117120
default=self.json_default,
118121
cls=self.json_encoder,
119-
indent=self.json_indent)
122+
indent=self.json_indent,
123+
ensure_ascii=self.json_ensure_ascii)
120124

121125
def format(self, record):
122126
"""Formats a log record and serializes to json"""

tests/tests.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,22 @@ def testExcInfo(self):
173173
logJson = json.loads(self.buffer.getvalue())
174174
self.assertEqual(logJson.get("exc_info"), expected_value)
175175

176+
def testEnsureAsciiTrue(self):
177+
fr = jsonlogger.JsonFormatter()
178+
self.logHandler.setFormatter(fr)
179+
self.logger.info('Привет')
180+
msg = self.buffer.getvalue().split('"message": "', 1)[1].split('"', 1)[0]
181+
self.assertEqual(msg, r"\u041f\u0440\u0438\u0432\u0435\u0442")
182+
183+
def testEnsureAsciiFalse(self):
184+
fr = jsonlogger.JsonFormatter(json_ensure_ascii=False)
185+
self.logHandler.setFormatter(fr)
186+
self.logger.info('Привет')
187+
msg = self.buffer.getvalue().split('"message": "', 1)[1].split('"', 1)[0]
188+
self.assertEqual(msg, "Привет")
189+
190+
191+
176192
if __name__ == '__main__':
177193
if len(sys.argv[1:]) > 0:
178194
if sys.argv[1] == 'xml':

0 commit comments

Comments
 (0)