diff --git a/logging.py b/logging.py index a330164d14f17d3ed33241856752bc7748f1c8e0..4cd36e5827d7b1d2c35a1575222d7e84647dbc76 100644 --- a/logging.py +++ b/logging.py @@ -120,7 +120,7 @@ def init_logging(caller): print('Creating logging folders.') logging_directory.mkdir() - # Add new logging levels. + # Add new logging levels here. # Load dictionary of settings into logger. this.settings = get_logging_settings() @@ -134,9 +134,9 @@ def init_logging(caller): def add_logging_level(level_name, level_num, method_name=None): """ - Logic to add a new logging level to logger. + Adds a new logging level to logger. - Logic from https://stackoverflow.com/a/35804945 + Original logic from https://stackoverflow.com/a/35804945 :param level_name: The name of new log level to create. :param level_num: The numerical value of new log level to create. :param method_name: The name of invoke method for new log level. Defaults to lowercase of level_name. @@ -146,16 +146,24 @@ def add_logging_level(level_name, level_num, method_name=None): method_name = level_name.lower() # Check if values have already been defined in logger. Prevents accidental overriding. + orig_log_level_name = logging.getLevelName(level_num) if (hasattr(logging, level_name) and hasattr(logging, method_name) and - hasattr(logging.getLoggerClass(), method_name)): + hasattr(logging.getLoggerClass(), method_name) and + orig_log_level_name == level_name + ): # Log level already set with same values. Skip setting. return None elif (hasattr(logging, level_name) or - hasattr(logging, method_name) or - hasattr(logging.getLoggerClass(), method_name)): + hasattr(logging, method_name) or + hasattr(logging.getLoggerClass(), method_name) or + orig_log_level_name != 'Level {0}'.format(level_num) + ): # Log level partially defined with some values. Raise error. - raise AttributeError('{0} already defined in logging module, but values do not match.'.format(level_name)) + raise AttributeError('Level "{0}: {1}" already defined in logging module, but values do not match.'.format( + level_num, + level_name, + )) # Methods to enable logging at new level. def log_for_level(self, message, *args, **kwargs): diff --git a/tests/src/logging.py b/tests/src/logging.py index bc82d0f8cb0dffa1f6b2bad0a29b445e5b021fcb..345cbbf303a2eb43e84d3c4d34e880a109a4d018 100644 --- a/tests/src/logging.py +++ b/tests/src/logging.py @@ -128,7 +128,7 @@ def init_logging(caller): print('Creating logging folders.') logging_directory.mkdir() - # Add new logging levels. + # Add new logging levels here. add_logging_level('TESTING', 25) # Load dictionary of settings into logger. @@ -143,9 +143,9 @@ def init_logging(caller): def add_logging_level(level_name, level_num, method_name=None): """ - Logic to add a new logging level to logger. + Adds a new logging level to logger. - Logic from https://stackoverflow.com/a/35804945 + Original logic from https://stackoverflow.com/a/35804945 :param level_name: The name of new log level to create. :param level_num: The numerical value of new log level to create. :param method_name: The name of invoke method for new log level. Defaults to lowercase of level_name. @@ -155,16 +155,24 @@ def add_logging_level(level_name, level_num, method_name=None): method_name = level_name.lower() # Check if values have already been defined in logger. Prevents accidental overriding. + orig_log_level_name = logging.getLevelName(level_num) if (hasattr(logging, level_name) and hasattr(logging, method_name) and - hasattr(logging.getLoggerClass(), method_name)): + hasattr(logging.getLoggerClass(), method_name) and + orig_log_level_name == level_name + ): # Log level already set with same values. Skip setting. return None elif (hasattr(logging, level_name) or - hasattr(logging, method_name) or - hasattr(logging.getLoggerClass(), method_name)): + hasattr(logging, method_name) or + hasattr(logging.getLoggerClass(), method_name) or + orig_log_level_name != 'Level {0}'.format(level_num) + ): # Log level partially defined with some values. Raise error. - raise AttributeError('{0} already defined in logging module, but values do not match.'.format(level_name)) + raise AttributeError('Level "{0}: {1}" already defined in logging module, but values do not match.'.format( + level_num, + level_name, + )) # Methods to enable logging at new level. def log_for_level(self, message, *args, **kwargs): diff --git a/tests/src/submodule_test/src/logging.py b/tests/src/submodule_test/src/logging.py index efe6f78cb9115f77eed723a757250bb636069da6..3c107bbee8ffd324aa29802153478c585efa0768 100644 --- a/tests/src/submodule_test/src/logging.py +++ b/tests/src/submodule_test/src/logging.py @@ -128,7 +128,7 @@ def init_logging(caller): print('Creating logging folders.') logging_directory.mkdir() - # Add new logging levels. + # Add new logging levels here. add_logging_level('SUBMODULE', 26) # Load dictionary of settings into logger. @@ -143,9 +143,9 @@ def init_logging(caller): def add_logging_level(level_name, level_num, method_name=None): """ - Logic to add a new logging level to logger. + Adds a new logging level to logger. - Logic from https://stackoverflow.com/a/35804945 + Original logic from https://stackoverflow.com/a/35804945 :param level_name: The name of new log level to create. :param level_num: The numerical value of new log level to create. :param method_name: The name of invoke method for new log level. Defaults to lowercase of level_name. @@ -155,16 +155,24 @@ def add_logging_level(level_name, level_num, method_name=None): method_name = level_name.lower() # Check if values have already been defined in logger. Prevents accidental overriding. + orig_log_level_name = logging.getLevelName(level_num) if (hasattr(logging, level_name) and hasattr(logging, method_name) and - hasattr(logging.getLoggerClass(), method_name)): + hasattr(logging.getLoggerClass(), method_name) and + orig_log_level_name == level_name + ): # Log level already set with same values. Skip setting. return None elif (hasattr(logging, level_name) or hasattr(logging, method_name) or - hasattr(logging.getLoggerClass(), method_name)): + hasattr(logging.getLoggerClass(), method_name) or + orig_log_level_name != 'Level {0}'.format(level_num) + ): # Log level partially defined with some values. Raise error. - raise AttributeError('{0} already defined in logging module, but values do not match.'.format(level_name)) + raise AttributeError('Level "{0}: {1}" already defined in logging module, but values do not match.'.format( + level_num, + level_name, + )) # Methods to enable logging at new level. def log_for_level(self, message, *args, **kwargs):