diff --git a/source/config/__init__.py b/source/config/__init__.py index c9b3f600708..4e24377abda 100644 --- a/source/config/__init__.py +++ b/source/config/__init__.py @@ -590,7 +590,7 @@ def _initBaseConf(self, factoryDefaults=False): self.profiles.append(profile) self._handleProfileSwitch() - def _loadConfig(self, fn, fileError=False): + def _loadConfig(self, fn: str | None, fileError: bool = False) -> ConfigObj: log.info("Loading config: {0}".format(fn)) profile = ConfigObj(fn, indent_type="\t", encoding="UTF-8", file_error=fileError) # Python converts \r\n to \n when reading files in Windows, so ConfigObj can't determine the true line ending. @@ -609,10 +609,15 @@ def _loadConfig(self, fn, fileError=False): # since profile settings are not yet imported we have to "peek" to see # if debug level logging is enabled. try: - logLevelName = profile["general"]["loggingLevel"] + logLevelName: str = profile["general"]["loggingLevel"] + if not logLevelName: + level = None + else: + level = logging.getLevelNamesMapping().get(logLevelName) except KeyError: - logLevelName = None - if log.isEnabledFor(log.DEBUG) or (logLevelName and DEBUG >= logging.getLevelName(logLevelName)): + level = None + + if log.isEnabledFor(log.DEBUG) or (level and DEBUG >= level): # Log at level info to ensure that the profile is logged. log.info( "Config loaded (after upgrade, and in the state it will be used by NVDA):\n{0}".format( diff --git a/source/logHandler.py b/source/logHandler.py index 4e1f7a17ccb..70b1af27b90 100755 --- a/source/logHandler.py +++ b/source/logHandler.py @@ -657,12 +657,11 @@ def setLogLevelFromConfig(): return import config - levelName = config.conf["general"]["loggingLevel"] - # logging.getLevelName can give you a level number if given a name. - level = logging.getLevelName(levelName) + levelName: str = config.conf["general"]["loggingLevel"] + level = logging.getLevelNamesMapping().get(levelName) # The lone exception to level higher than INFO is "OFF" (100). # Setting a log level to something other than options found in the GUI is unsupported. - if level not in (log.DEBUG, log.IO, log.DEBUGWARNING, log.INFO, log.OFF): + if level is None or level not in (log.DEBUG, log.IO, log.DEBUGWARNING, log.INFO, log.OFF): log.warning("invalid setting for logging level: %s" % levelName) level = log.INFO config.conf["general"]["loggingLevel"] = logging.getLevelName(log.INFO)