mirror of
https://github.com/python/cpython.git
synced 2025-09-26 18:29:57 +00:00
Closes #18046: Simplified logging internals relating to levels and their names. Thanks to Alex Gaynor for the patch.
This commit is contained in:
parent
e08b583d88
commit
3b84eae03e
3 changed files with 30 additions and 25 deletions
|
@ -123,20 +123,22 @@ INFO = 20
|
||||||
DEBUG = 10
|
DEBUG = 10
|
||||||
NOTSET = 0
|
NOTSET = 0
|
||||||
|
|
||||||
_levelNames = {
|
_levelToName = {
|
||||||
CRITICAL : 'CRITICAL',
|
CRITICAL: 'CRITICAL',
|
||||||
ERROR : 'ERROR',
|
ERROR: 'ERROR',
|
||||||
WARNING : 'WARNING',
|
WARNING: 'WARNING',
|
||||||
INFO : 'INFO',
|
INFO: 'INFO',
|
||||||
DEBUG : 'DEBUG',
|
DEBUG: 'DEBUG',
|
||||||
NOTSET : 'NOTSET',
|
NOTSET: 'NOTSET',
|
||||||
'CRITICAL' : CRITICAL,
|
}
|
||||||
'ERROR' : ERROR,
|
_nameToLevel = {
|
||||||
'WARN' : WARNING,
|
'CRITICAL': CRITICAL,
|
||||||
'WARNING' : WARNING,
|
'ERROR': ERROR,
|
||||||
'INFO' : INFO,
|
'WARN': WARNING,
|
||||||
'DEBUG' : DEBUG,
|
'WARNING': WARNING,
|
||||||
'NOTSET' : NOTSET,
|
'INFO': INFO,
|
||||||
|
'DEBUG': DEBUG,
|
||||||
|
'NOTSET': NOTSET,
|
||||||
}
|
}
|
||||||
|
|
||||||
def getLevelName(level):
|
def getLevelName(level):
|
||||||
|
@ -153,7 +155,7 @@ def getLevelName(level):
|
||||||
|
|
||||||
Otherwise, the string "Level %s" % level is returned.
|
Otherwise, the string "Level %s" % level is returned.
|
||||||
"""
|
"""
|
||||||
return _levelNames.get(level, ("Level %s" % level))
|
return _levelToName.get(level, ("Level %s" % level))
|
||||||
|
|
||||||
def addLevelName(level, levelName):
|
def addLevelName(level, levelName):
|
||||||
"""
|
"""
|
||||||
|
@ -163,8 +165,8 @@ def addLevelName(level, levelName):
|
||||||
"""
|
"""
|
||||||
_acquireLock()
|
_acquireLock()
|
||||||
try: #unlikely to cause an exception, but you never know...
|
try: #unlikely to cause an exception, but you never know...
|
||||||
_levelNames[level] = levelName
|
_levelToName[level] = levelName
|
||||||
_levelNames[levelName] = level
|
_nameToLevel[levelName] = level
|
||||||
finally:
|
finally:
|
||||||
_releaseLock()
|
_releaseLock()
|
||||||
|
|
||||||
|
@ -172,9 +174,9 @@ def _checkLevel(level):
|
||||||
if isinstance(level, int):
|
if isinstance(level, int):
|
||||||
rv = level
|
rv = level
|
||||||
elif str(level) == level:
|
elif str(level) == level:
|
||||||
if level not in _levelNames:
|
if level not in _nameToLevel:
|
||||||
raise ValueError("Unknown level: %r" % level)
|
raise ValueError("Unknown level: %r" % level)
|
||||||
rv = _levelNames[level]
|
rv = _nameToLevel[level]
|
||||||
else:
|
else:
|
||||||
raise TypeError("Level not an integer or a valid string: %r" % level)
|
raise TypeError("Level not an integer or a valid string: %r" % level)
|
||||||
return rv
|
return rv
|
||||||
|
|
|
@ -144,7 +144,7 @@ def _install_handlers(cp, formatters):
|
||||||
h = klass(*args)
|
h = klass(*args)
|
||||||
if "level" in section:
|
if "level" in section:
|
||||||
level = section["level"]
|
level = section["level"]
|
||||||
h.setLevel(logging._levelNames[level])
|
h.setLevel(level)
|
||||||
if len(fmt):
|
if len(fmt):
|
||||||
h.setFormatter(formatters[fmt])
|
h.setFormatter(formatters[fmt])
|
||||||
if issubclass(klass, logging.handlers.MemoryHandler):
|
if issubclass(klass, logging.handlers.MemoryHandler):
|
||||||
|
@ -191,7 +191,7 @@ def _install_loggers(cp, handlers, disable_existing):
|
||||||
log = root
|
log = root
|
||||||
if "level" in section:
|
if "level" in section:
|
||||||
level = section["level"]
|
level = section["level"]
|
||||||
log.setLevel(logging._levelNames[level])
|
log.setLevel(level)
|
||||||
for h in root.handlers[:]:
|
for h in root.handlers[:]:
|
||||||
root.removeHandler(h)
|
root.removeHandler(h)
|
||||||
hlist = section["handlers"]
|
hlist = section["handlers"]
|
||||||
|
@ -237,7 +237,7 @@ def _install_loggers(cp, handlers, disable_existing):
|
||||||
existing.remove(qn)
|
existing.remove(qn)
|
||||||
if "level" in section:
|
if "level" in section:
|
||||||
level = section["level"]
|
level = section["level"]
|
||||||
logger.setLevel(logging._levelNames[level])
|
logger.setLevel(level)
|
||||||
for h in logger.handlers[:]:
|
for h in logger.handlers[:]:
|
||||||
logger.removeHandler(h)
|
logger.removeHandler(h)
|
||||||
logger.propagate = propagate
|
logger.propagate = propagate
|
||||||
|
|
|
@ -94,7 +94,8 @@ class BaseTest(unittest.TestCase):
|
||||||
self.saved_handlers = logging._handlers.copy()
|
self.saved_handlers = logging._handlers.copy()
|
||||||
self.saved_handler_list = logging._handlerList[:]
|
self.saved_handler_list = logging._handlerList[:]
|
||||||
self.saved_loggers = saved_loggers = logger_dict.copy()
|
self.saved_loggers = saved_loggers = logger_dict.copy()
|
||||||
self.saved_level_names = logging._levelNames.copy()
|
self.saved_name_to_level = logging._nameToLevel.copy()
|
||||||
|
self.saved_level_to_name = logging._levelToName.copy()
|
||||||
self.logger_states = logger_states = {}
|
self.logger_states = logger_states = {}
|
||||||
for name in saved_loggers:
|
for name in saved_loggers:
|
||||||
logger_states[name] = getattr(saved_loggers[name],
|
logger_states[name] = getattr(saved_loggers[name],
|
||||||
|
@ -136,8 +137,10 @@ class BaseTest(unittest.TestCase):
|
||||||
self.root_logger.setLevel(self.original_logging_level)
|
self.root_logger.setLevel(self.original_logging_level)
|
||||||
logging._acquireLock()
|
logging._acquireLock()
|
||||||
try:
|
try:
|
||||||
logging._levelNames.clear()
|
logging._levelToName.clear()
|
||||||
logging._levelNames.update(self.saved_level_names)
|
logging._levelToName.update(self.saved_level_to_name)
|
||||||
|
logging._nameToLevel.clear()
|
||||||
|
logging._nameToLevel.update(self.saved_name_to_level)
|
||||||
logging._handlers.clear()
|
logging._handlers.clear()
|
||||||
logging._handlers.update(self.saved_handlers)
|
logging._handlers.update(self.saved_handlers)
|
||||||
logging._handlerList[:] = self.saved_handler_list
|
logging._handlerList[:] = self.saved_handler_list
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue