logger: дублирование сообщений
Почему после перенаправления всего стандартного вывода в лог файл каждое сообщение в файле выводится по три раза? Это происходит на ВМ но не воспроизводится на моем ПК.
# Создание объекта логгера
logger = logging.getLogger('log')
logger.setLevel(logging.DEBUG)
# Создание обработчика для записи в файл с ограничением в 10Мб
file_handler = RotatingFileHandler(log_path, maxBytes=10*1024*1024, backupCount=1)
file_handler.setLevel(logging.DEBUG)
# Создание форматирования для сообщений в логе
formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
# Применение форматирования к обработчику
file_handler.setFormatter(formatter)
# Добавление обработчика к логгеру
logger.addHandler(file_handler)
# Перенаправление стандартного вывода в логгер
class StreamToLogger:
def __init__(self, logger, log_level=logging.INFO):
self.logger = logger
self.log_level = log_level
self.linebuf = ''
def write(self, buf):
for line in buf.rstrip().splitlines():
self.logger.log(self.log_level, line.rstrip())
def flush(self):
pass
# Создание экземпляра класса StreamToLogger и перенаправление вывода
sys.stdout = StreamToLogger(logger, logging.INFO)
sys.stderr = StreamToLogger(logger, logging.ERROR)