Skip to content

Commit 2169cde

Browse files
committed
journal: do not convert extra args to string in JournalHandler
send() already does conversions in a type-specific way, and doing it in journal handler would defeat those conversions. In particular, UUIDs would be converted to early and have dashes.
1 parent aa5550a commit 2169cde

File tree

2 files changed

+6
-6
lines changed

2 files changed

+6
-6
lines changed

systemd/journal.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -575,11 +575,10 @@ def emit(self, record):
575575
try:
576576
msg = self.format(record)
577577
pri = self.map_priority(record.levelno)
578-
extras = {k: str(v) for k, v in self._extra.items()}
579-
extras.update({
580-
k: str(v) for k, v in record.__dict__.items()
581-
})
578+
# defaults
579+
extras = self._extra.copy()
582580

581+
# higher priority
583582
if record.exc_text:
584583
extras['EXCEPTION_TEXT'] = record.exc_text
585584

@@ -589,6 +588,9 @@ def emit(self, record):
589588
if record.args:
590589
extras['CODE_ARGS'] = str(record.args)
591590

591+
# explicit arguments — highest priority
592+
extras.update(record.__dict__)
593+
592594
self.send(msg,
593595
PRIORITY=format(pri),
594596
LOGGER=record.name,

systemd/test/test_journal.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,6 @@ def test_journalhandler_no_message_id():
107107
assert all(not m.startswith('MESSAGE_ID=') for m in sender.buf[0])
108108

109109
def test_journalhandler_message_id_on_handler():
110-
pytest.xfail()
111110
record = logging.LogRecord('test-logger', logging.INFO, 'testpath', 1, 'test', None, None)
112111
sender = MockSender()
113112
handler = journal.JournalHandler(logging.INFO, sender_function=sender.send,
@@ -126,7 +125,6 @@ def test_journalhandler_message_id_on_handler_hex():
126125
assert 'MESSAGE_ID=' + TEST_MID.hex in sender.buf[0]
127126

128127
def test_journalhandler_message_id_on_message():
129-
pytest.xfail()
130128
record = logging.LogRecord('test-logger', logging.INFO, 'testpath', 1, 'test', None, None)
131129
record.__dict__['MESSAGE_ID'] = TEST_MID2
132130
sender = MockSender()

0 commit comments

Comments
 (0)