Skip to content

Commit d04ca4c

Browse files
[3.11] gh-113421: Fix multiprocessing logger for "%(filename)s" (GH-113423) (GH-113451)
(cherry picked from commit ce77ee5) Co-authored-by: Xu Song <[email protected]>
1 parent 336d445 commit d04ca4c

File tree

3 files changed

+28
-4
lines changed

3 files changed

+28
-4
lines changed

Lib/multiprocessing/util.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,19 +43,19 @@
4343

4444
def sub_debug(msg, *args):
4545
if _logger:
46-
_logger.log(SUBDEBUG, msg, *args)
46+
_logger.log(SUBDEBUG, msg, *args, stacklevel=2)
4747

4848
def debug(msg, *args):
4949
if _logger:
50-
_logger.log(DEBUG, msg, *args)
50+
_logger.log(DEBUG, msg, *args, stacklevel=2)
5151

5252
def info(msg, *args):
5353
if _logger:
54-
_logger.log(INFO, msg, *args)
54+
_logger.log(INFO, msg, *args, stacklevel=2)
5555

5656
def sub_warning(msg, *args):
5757
if _logger:
58-
_logger.log(SUBWARNING, msg, *args)
58+
_logger.log(SUBWARNING, msg, *args, stacklevel=2)
5959

6060
def get_logger():
6161
'''

Lib/test/_test_multiprocessing.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4629,6 +4629,29 @@ def test_level(self):
46294629
root_logger.setLevel(root_level)
46304630
logger.setLevel(level=LOG_LEVEL)
46314631

4632+
def test_filename(self):
4633+
logger = multiprocessing.get_logger()
4634+
original_level = logger.level
4635+
try:
4636+
logger.setLevel(util.DEBUG)
4637+
stream = io.StringIO()
4638+
handler = logging.StreamHandler(stream)
4639+
logging_format = '[%(levelname)s] [%(filename)s] %(message)s'
4640+
handler.setFormatter(logging.Formatter(logging_format))
4641+
logger.addHandler(handler)
4642+
logger.info('1')
4643+
util.info('2')
4644+
logger.debug('3')
4645+
filename = os.path.basename(__file__)
4646+
log_record = stream.getvalue()
4647+
self.assertIn(f'[INFO] [{filename}] 1', log_record)
4648+
self.assertIn(f'[INFO] [{filename}] 2', log_record)
4649+
self.assertIn(f'[DEBUG] [{filename}] 3', log_record)
4650+
finally:
4651+
logger.setLevel(original_level)
4652+
logger.removeHandler(handler)
4653+
handler.close()
4654+
46324655

46334656
# class _TestLoggingProcessName(BaseTestCase):
46344657
#
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Fix multiprocessing logger for ``%(filename)s``.

0 commit comments

Comments
 (0)