mirror of https://github.com/python/cpython
issue 4301: patch logging to add processName, remove the old _check_logger_class code
This commit is contained in:
parent
fe11f4d524
commit
438195fc11
|
@ -99,6 +99,11 @@ raiseExceptions = 1
|
||||||
#
|
#
|
||||||
logThreads = 1
|
logThreads = 1
|
||||||
|
|
||||||
|
#
|
||||||
|
# If you don't want multiprocessing information in the log, set this to zero
|
||||||
|
#
|
||||||
|
logMultiprocessing = 1
|
||||||
|
|
||||||
#
|
#
|
||||||
# If you don't want process information in the log, set this to zero
|
# If you don't want process information in the log, set this to zero
|
||||||
#
|
#
|
||||||
|
@ -266,6 +271,11 @@ class LogRecord:
|
||||||
else:
|
else:
|
||||||
self.thread = None
|
self.thread = None
|
||||||
self.threadName = None
|
self.threadName = None
|
||||||
|
if logMultiprocessing:
|
||||||
|
from multiprocessing import current_process
|
||||||
|
self.processName = current_process().name
|
||||||
|
else:
|
||||||
|
self.processName = None
|
||||||
if logProcesses and hasattr(os, 'getpid'):
|
if logProcesses and hasattr(os, 'getpid'):
|
||||||
self.process = os.getpid()
|
self.process = os.getpid()
|
||||||
else:
|
else:
|
||||||
|
|
|
@ -69,34 +69,10 @@ def get_logger():
|
||||||
atexit._exithandlers.remove((_exit_function, (), {}))
|
atexit._exithandlers.remove((_exit_function, (), {}))
|
||||||
atexit._exithandlers.append((_exit_function, (), {}))
|
atexit._exithandlers.append((_exit_function, (), {}))
|
||||||
|
|
||||||
_check_logger_class()
|
|
||||||
_logger = logging.getLogger(LOGGER_NAME)
|
_logger = logging.getLogger(LOGGER_NAME)
|
||||||
|
|
||||||
return _logger
|
return _logger
|
||||||
|
|
||||||
def _check_logger_class():
|
|
||||||
'''
|
|
||||||
Make sure process name is recorded when loggers are used
|
|
||||||
'''
|
|
||||||
# XXX This function is unnecessary once logging is patched
|
|
||||||
import logging
|
|
||||||
if hasattr(logging, 'multiprocessing'):
|
|
||||||
return
|
|
||||||
|
|
||||||
logging._acquireLock()
|
|
||||||
try:
|
|
||||||
OldLoggerClass = logging.getLoggerClass()
|
|
||||||
if not getattr(OldLoggerClass, '_process_aware', False):
|
|
||||||
class ProcessAwareLogger(OldLoggerClass):
|
|
||||||
_process_aware = True
|
|
||||||
def makeRecord(self, *args, **kwds):
|
|
||||||
record = OldLoggerClass.makeRecord(self, *args, **kwds)
|
|
||||||
record.processName = current_process()._name
|
|
||||||
return record
|
|
||||||
logging.setLoggerClass(ProcessAwareLogger)
|
|
||||||
finally:
|
|
||||||
logging._releaseLock()
|
|
||||||
|
|
||||||
def log_to_stderr(level=None):
|
def log_to_stderr(level=None):
|
||||||
'''
|
'''
|
||||||
Turn on logging and add a handler which prints to stderr
|
Turn on logging and add a handler which prints to stderr
|
||||||
|
|
|
@ -596,6 +596,9 @@ Library
|
||||||
Extension Modules
|
Extension Modules
|
||||||
-----------------
|
-----------------
|
||||||
|
|
||||||
|
- Issue #4301: Patch the logging module to add processName support, remove
|
||||||
|
_check_logger_class from multiprocessing.
|
||||||
|
|
||||||
- Issue #2975: When compiling several extension modules with Visual Studio 2008
|
- Issue #2975: When compiling several extension modules with Visual Studio 2008
|
||||||
from the same python interpreter, some environment variables would grow
|
from the same python interpreter, some environment variables would grow
|
||||||
without limit.
|
without limit.
|
||||||
|
|
Loading…
Reference in New Issue