Я думаю, вам нужно убрать звонок на logging.basicConfig
.Эта функция добавляет еще один logging.StreamHandler
, который, вероятно, является тем, который печатает сообщения, которые вы не хотите печатать.
Чтобы проверить это, вы можете взглянуть на атрибут handlers
для корневого регистратора(это список со всеми используемыми обработчиками) и проверьте, сколько logging.StreamHandlers
.Также, вероятно, сообщение с уровнем, установленным на logging.ERROR
, печатаются дважды из-за двух logging.StreamHandler
s.
Мой последний совет: не используйте logging.basicConfig
, если вы собираетесь явно настроить обработчики вкод.
Редактировать: Просто для полноты, исходный код logging.BasicConfig
выглядит следующим образом:
if len(root.handlers) == 0:
filename = kwargs.get("filename")
if filename:
mode = kwargs.get("filemode", 'a')
hdlr = FileHandler(filename, mode)
else:
stream = kwargs.get("stream")
hdlr = StreamHandler(stream)
fs = kwargs.get("format", BASIC_FORMAT)
dfs = kwargs.get("datefmt", None)
fmt = Formatter(fs, dfs)
hdlr.setFormatter(fmt)
root.addHandler(hdlr)
level = kwargs.get("level")
if level is not None:
root.setLevel(level)
, где вы можете видеть, что если не передано filename
, то logging.StreamHandler
создан.