У меня есть такая функция инициализации регистратора:
def generate_logger():
import logging
LOG_FILENAME = os.path.join(PROJECT_DIR, "mylog.log")
FORMAT = "%(asctime)s : %(message)s"
logger = logging.getLogger()
logger.setLevel(logging.INFO)
fh = logging.FileHandler(LOG_FILENAME)
formatter = logging.Formatter(FORMAT)
fh.setFormatter(formatter)
logger.addHandler(fh)
return logger
И в некоторой части моего кода у меня есть такая ловля исключения:
logger = generate_logger()
except AttributeError:
logger.error('Opps we got an error')
Странно я получаю ту же ошибку записанные 2 раза, и она может быть поймана только однажды, после того как я изменяюсь logger.error('Opps we got an error')
с print "test"
, Я получаю "тест", распечатанный однажды.
Каковы могут быть проблема и решение.
С уважением
Я думаю, вы, вероятно, каким-то образом добавляете к регистратору два обработчика. Возможно, в какой-то момент добавляется неявный обработчик.
У вас, вероятно, есть два обработчика, которые обращаются к одному и тому же результирующему журналу.
Сколько обработчиков вы создаете? Сколько раз вы запускаете generate_logger
? Каждый раз, когда вы выполняете generate_logger
, вы создаете другой обработчик для того же файла, что может привести к дублированию.