Skip to content

Commit a5561e5

Browse files
Merge pull request #7 from MyColorfulDays/v0.3.x
#6 fix: unexpected `_JsonFormatter__extra` in log
2 parents c99a334 + 38b8dcb commit a5561e5

File tree

5 files changed

+50
-8
lines changed

5 files changed

+50
-8
lines changed

jsonformatter/__init__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,5 @@
1212

1313
__all__ = ['JsonFormatter', 'basicConfig']
1414

15-
version = "0.3.0"
16-
version_info = (0, 3, 0)
15+
version = "0.3.1"
16+
version_info = (0, 3, 1)

jsonformatter/jsonformatter.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -382,7 +382,7 @@ def _set_fmt_to_result():
382382
record.asctime = self.formatTime(record, self.datefmt)
383383

384384
# pop stored __extra start
385-
extra = record.__dict__.pop('__extra', None)
385+
extra = record.__dict__.pop('__extra', None) or record.__dict__.pop('_JsonFormatter__extra', None)
386386
if extra is None:
387387
# extra is dictionary
388388
extra = self.getRecordExtraAttrs(record)

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525

2626
setup(
2727
name='jsonformatter',
28-
version='0.3.0',
28+
version='0.3.1',
2929
description=(
3030
'Python log in json format.'
3131
),

test/test.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -405,6 +405,27 @@ def test_mix_extra_position_is_head(self):
405405
root.info('test mix extra position is head',
406406
extra={'extra': 'extra content'})
407407

408+
def test_mix_extra_multi_formatter(self):
409+
root = logging.getLogger()
410+
root.setLevel(logging.INFO)
411+
412+
fh = logging.FileHandler('jsonformatter.log')
413+
formatter = JsonFormatter(
414+
ensure_ascii=False, mix_extra=True, indent=4)
415+
fh.setFormatter(formatter)
416+
fh.setLevel(logging.INFO)
417+
root.addHandler(fh)
418+
419+
sh = logging.StreamHandler()
420+
formatter = JsonFormatter(
421+
ensure_ascii=False, mix_extra=True, indent=4)
422+
sh.setFormatter(formatter)
423+
sh.setLevel(logging.INFO)
424+
root.addHandler(sh)
425+
426+
root.info('test mix extra multi formatter',
427+
extra={'extra': 'extra content'})
428+
408429
def test_mix_extra_position_is_mix(self):
409430
root = logging.getLogger()
410431
root.setLevel(logging.INFO)

test/test_windows.py

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ def test_percent_style_unicode(self):
153153
sh.setLevel(logging.INFO)
154154

155155
root.addHandler(sh)
156-
root.info('test percent style unicode: %s', 'ÖÐÎÄ')
156+
root.info('test percent style unicode: %s', '����')
157157

158158
def test_format_style_unicode(self):
159159
root = logging.getLogger()
@@ -167,7 +167,7 @@ def test_format_style_unicode(self):
167167
sh.setLevel(logging.INFO)
168168

169169
root.addHandler(sh)
170-
root.info('test format style unicode: %s', 'ÖÐÎÄ')
170+
root.info('test format style unicode: %s', '����')
171171

172172
def test_template_style_unicode(self):
173173
root = logging.getLogger()
@@ -181,7 +181,7 @@ def test_template_style_unicode(self):
181181
sh.setLevel(logging.INFO)
182182

183183
root.addHandler(sh)
184-
root.info('test template style unicode: %s', 'ÖÐÎÄ')
184+
root.info('test template style unicode: %s', '����')
185185

186186
def test_dict_format(self):
187187
DICT_FORMAT = {
@@ -348,7 +348,7 @@ def test_json_dumps_parameter_ensure_ascii_false(self):
348348

349349
root.addHandler(sh)
350350

351-
root.info('test json dumps parameter `ensure_ascii` False: ÖÐÎÄ')
351+
root.info('test json dumps parameter `ensure_ascii` False: ����')
352352

353353
def test_file_config(self):
354354
fileConfig(os.path.join(os.path.dirname(
@@ -416,6 +416,27 @@ def test_mix_extra_position_is_head(self):
416416
root.info('test mix extra position is head',
417417
extra={'extra': 'extra content'})
418418

419+
def test_mix_extra_multi_formatter(self):
420+
root = logging.getLogger()
421+
root.setLevel(logging.INFO)
422+
423+
fh = logging.FileHandler('jsonformatter.log')
424+
formatter = JsonFormatter(
425+
ensure_ascii=False, mix_extra=True, indent=4)
426+
fh.setFormatter(formatter)
427+
fh.setLevel(logging.INFO)
428+
root.addHandler(fh)
429+
430+
sh = logging.StreamHandler()
431+
formatter = JsonFormatter(
432+
ensure_ascii=False, mix_extra=True, indent=4)
433+
sh.setFormatter(formatter)
434+
sh.setLevel(logging.INFO)
435+
root.addHandler(sh)
436+
437+
root.info('test mix extra multi formatter',
438+
extra={'extra': 'extra content'})
439+
419440
def test_mix_extra_position_is_mix(self):
420441
root = logging.getLogger()
421442
root.setLevel(logging.INFO)

0 commit comments

Comments
 (0)