Отключить логирование сторонних библиотек в мой файл лога
Использую в программе 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
→ Ссылка
Разобрался, как стоит вводить логирование в таком случае.
- Из основного файла (где вызываю необходимый класс) убрал
.basicConfig - Внутри класса ввел дополнительную функцию, которая настраивает
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)
Итогов в файл пишется только логи с моего. Частично помог ответ отсюда.