Skip to content

Commit 74dde4b

Browse files
authored
fix: fix original dict being logged in nested keys
Resolves #39
1 parent 4cb4158 commit 74dde4b

File tree

2 files changed

+49
-0
lines changed

2 files changed

+49
-0
lines changed

src/logfmter/formatter.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -236,6 +236,9 @@ def format(self, record: logging.LogRecord) -> str:
236236
else:
237237
continue
238238

239+
if isinstance(value, dict):
240+
continue
241+
239242
tokens.append("{}={}".format(key, self.format_value(value)))
240243

241244
formatted_params = self.format_params(params)

tests/test_formatter.py

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -311,6 +311,52 @@ def test_extra_keys(record):
311311
)
312312

313313

314+
@pytest.mark.parametrize(
315+
"record,expected",
316+
[
317+
(
318+
{
319+
"msg": {"msg": "alpha"},
320+
"levelname": "INFO",
321+
"foo": {"bar": "baz", "blub": "blah"},
322+
},
323+
"at=INFO msg=alpha foo.bar=baz foo.blub=blah",
324+
),
325+
(
326+
{
327+
"msg": "alpha",
328+
"levelname": "INFO",
329+
"foo": {"bar": "baz", "blub": "blah"},
330+
"foo.bar": "XXX",
331+
},
332+
"at=INFO msg=alpha foo.bar=XXX foo.blub=blah",
333+
),
334+
(
335+
{
336+
"msg": {"msg": "alpha", "foo": {"bar": "baz", "blub": "blah"}},
337+
"levelname": "INFO",
338+
},
339+
"at=INFO msg=alpha foo.bar=baz foo.blub=blah",
340+
),
341+
(
342+
{
343+
"msg": {
344+
"msg": "alpha",
345+
"foo": {"bar": "baz", "blub": "blah"},
346+
"foo.bar": "XXX",
347+
},
348+
"levelname": "INFO",
349+
},
350+
"at=INFO msg=alpha foo.bar=XXX foo.blub=blah",
351+
),
352+
],
353+
)
354+
def test_format_nested_keys(record, expected):
355+
record = logging.makeLogRecord(record)
356+
assert Logfmter(keys=["at", "foo"]).format(record) == expected
357+
assert Logfmter(keys=["at"]).format(record) == expected
358+
359+
314360
@pytest.mark.external
315361
@pytest.mark.parametrize(
316362
"value",

0 commit comments

Comments
 (0)