Skip to content

Commit 2474518

Browse files
committed
master: Fix LogForwarder in case an own LogRecordFactory is used
Since Python 3.2 the log record factory can be changed by using `logging.setLogRecordFactory` [1]. Therefore use `logging.makeLogRecord` as recommended in the documentation: "LogRecord instances are created automatically by the Logger every time something is logged, and can be created manually via makeLogRecord() (for example, from a pickled event received over the wire)." [2] This fixes the test case `log_handler_test.LogRecordFactoryTest.test_logrecordfactory`. [1] https://docs.python.org/3/library/logging.html#logging.setLogRecordFactory [2] https://docs.python.org/3/library/logging.html#logrecord-objects Signed-off-by: Marc Hartmayer <[email protected]>
1 parent dad28e8 commit 2474518

File tree

1 file changed

+12
-8
lines changed

1 file changed

+12
-8
lines changed

mitogen/master.py

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -370,15 +370,19 @@ def _on_forward_log(self, msg):
370370
if logger is None:
371371
self._cache[logger_name] = logger = logging.getLogger(logger_name)
372372

373+
levelno = int(level_s)
373374
# See logging.Handler.makeRecord()
374-
record = logging.LogRecord(
375-
name=logger.name,
376-
level=int(level_s),
377-
pathname='(unknown file)',
378-
lineno=0,
379-
msg=s,
380-
args=(),
381-
exc_info=None,
375+
record = logging.makeLogRecord(
376+
{
377+
"name": logger.name,
378+
"levelname": logging.getLevelName(levelno),
379+
"levelno": levelno,
380+
"pathname": "(unknown file)",
381+
"lineno": 0,
382+
"msg": s,
383+
"args": (),
384+
"exc_info": None,
385+
}
382386
)
383387
record.mitogen_message = s
384388
record.mitogen_context = self._router.context_by_id(msg.src_id)

0 commit comments

Comments
 (0)