Я хотел, чтобы разные объекты в моей программе имели разные уровни ведения журнала. Это возможно?
Я создал базовый класс, как показано ниже, содержащий методы для установки уровней ведения журнала.
class Logging():
""" Utility class for common methods."""
logging_levels = ['DEBUG','INFO']#,'WARNING','ERROR'
@property
def verbosity(self):
return self.__verbosity
@verbosity.setter
def verbosity(self,verbosity):
"""Method to set verbosity of logging on terminal. Different classes may have different levels of verbosity."""
assert verbosity in self.logging_levels, '{} is not a valid logging level!'.format(verbosity)
self.__verbosity = verbosity
#Set logging level - {DEBUG,INFO,WARNING,ERROR}
if verbosity == 'DEBUG':
logging.getLogger().setLevel(logging.DEBUG)
elif verbosity == 'INFO':
logging.getLogger().setLevel(logging.INFO)
elif verbosity == 'WARNING':
logging.getLogger().setLevel(logging.INFO)
print('{}:Logging level is set to:{}'.format(self.name,verbosity))
return self.__verbosity
Два других моих класса наследуются от класса 'Logging', и у меня есть следующие методы в init :
self.verbosity = verbosity
Однако я заметил, что всякий раз, когда экземпляр любого класса используется для установки уровня ведения журнала, уровень ведения журнала задается глобально.
Есть ли способ ограничить уровни ведения журнала конкретными экземплярами классов?
Отредактировано:
Используя предложение Джона Гордона, я смог найти решение. Пожалуйста, смотрите ниже.