Отключить логирование сторонних библиотек в мой файл лога

Использую в программе Logger и ещё одну библиотеку, которая внутри себя тоже использует логирование.

Итогом в мои файлы логирования выводит информацию и о моей программе и информацию, которую логирует библиотека. Последняя мне в файле не нужна.

Мой код (в упрощенном виде):

from mover import Mover
import logging
import vk_api


logging.basicConfig(
    filename='photo transfer.log',
    filemode='w',
    format='%(asctime)s - %(filename)s - %(levelname)s - %(message)s',
    level=logging.DEBUG
)

def main():
    """Основная логика работы скрипта"""

    vk_session = vk_auth(login, password, token)
    Mover(vk_session, group_id)  # внутри класса определен ещё один logger
    logging.debug('Перенос завершен')

Сторонняя библиотека которая используется - vk_api, но это не принципиально. Хотелось бы отключить логи от всех файлов, кроме тех, что находятся в моем проекте. Не понимаю, как это можно сделать.


Ответы (1 шт):

Автор решения: ikocs

Разобрался, как стоит вводить логирование в таком случае.

  1. Из основного файла (где вызываю необходимый класс) убрал .basicConfig
  2. Внутри класса ввел дополнительную функцию, которая настраивает logger:
def config_logger(logger):
    logger.setLevel(logging.DEBUG)
    f_handler = logging.FileHandler(filename="photo transfer.log",
                                    mode='w')

    formatter = logging.Formatter('%(asctime)s - %(filename)s - %(levelname)s - %(message)s')
    f_handler.setFormatter(formatter)

    logger.addHandler(f_handler)

Сам logger ввел отдельным полем внутри класса при инициализации:

class MyClass:
    def __init__(self):
        self.logger = logging.getLogger('__name__')
        config_logger(self.logger)

Итогов в файл пишется только логи с моего. Частично помог ответ отсюда.

→ Ссылка