Я расширил класс логгера python, указанный ниже:
class CommonLogger(Logger):
def debug(self, *args):
self.check_and_log(10, args)
def info(self, *args):
self.check_and_log(20, args)
def warn(self, *args):
self.check_and_log(30, args)
def error(self, *args):
self.check_and_log(40, args)
def check_and_log(self, level, args):
if self.isEnabledFor(level):
log_str = self.convert_list_to_string(args)
super().log(level, log_str)
@staticmethod
def convert_list_to_string(args):
return ''.join(str(msg) for msg in args)
И затем создал регистратор в каждом классе, который использует его следующим образом:
self.logger = CommonLogger(logging.getLogger(Constants.LOGGER_NAME))
self.logger.info('starting logger: ' + str(Constants.LOGGER_NAME))
Но когда я запускаю это, он не выдает ошибку - но он также не печатает никаких журналов на консоли. Любая идея, почему?
ОБНОВЛЕНИЕ: я сравнил это с нормальным потоком печати журнала - и похоже, что мои logging.handlers не инициализированы ( пустой список) внутри класса Logger, когда он создается как реализация класса Logger.
handlers = {list} <class 'list'> []
в то время как в обычном потоке - обработчики заполняются так:
handlers = {list} <class 'list'>: [<StreamHandler <stdout> (INFO)>, <RotatingFileHandler D:\y\logs\engine.log (INFO)>]
0 = {StreamHandler} <StreamHandler <stdout> (INFO)>
1 = {RotatingFileHandler} <RotatingFileHandler D:\y\logs\engine.log (INFO)>
__len__ = {int} 2
Есть предложения?