Kaydet (Commit) 3b84eae0 authored tarafından Vinay Sajip's avatar Vinay Sajip

Closes #18046: Simplified logging internals relating to levels and their names.…

Closes #18046: Simplified logging internals relating to levels and their names. Thanks to Alex Gaynor for the patch.
üst e08b583d
...@@ -123,20 +123,22 @@ INFO = 20 ...@@ -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): ...@@ -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): ...@@ -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): ...@@ -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): ...@@ -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): ...@@ -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): ...@@ -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): ...@@ -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): ...@@ -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
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment