Пытаюсь создать класс логгеров для моей посылки, и я близок к тому, чтобы биться головой об стену. Независимо от того, что я делаю, регистратор также будет регистрировать сообщения от внешних модулей. Вот мой класс:
import logging
import os
import sys
from pathlib import Path
from datetime import date
class Logger:
# Variables
log_path = ''
log_format = '%(asctime)s %(levelname)-8s %(message)s'
date_format = '%Y-%m-%d'
datetime_format = '%Y-%m-%d %H:%M:%S'
logger = None
# CTOR
def __init__(self, base_path):
self.log_path = os.path.join(base_path, "logs/")
Path(self.log_path).mkdir(parents=True, exist_ok=True)
logfile = os.path.join(self.log_path, date.today().strftime(self.date_format) + ".log")
logging.basicConfig(
filename=logfile,
level=logging.WARNING,
filemode='a',
format=self.log_format,
datefmt=self.datetime_format)
self.logger = logging.getLogger('bleservice')
self.logger.setLevel(logging.INFO)
# Methods
def log_information(self, message):
self.logger.info(message)
print('logged info')
def log_error(self, message):
self.logger.error(message)
print('logged error into')
def log_exception(self, exception):
self.logger.exception(message)
print('logged exception into')
По сути, я хочу записывать предупреждения и ошибки от внешних модулей и всю информацию из моего пакета в один и тот же файл. Тем не менее, он также регистрирует информационные сообщения от внешних модулей, благодаря чему размер моего файла журнала увеличивается до нескольких ГБ. Что я здесь не так делаю?
РЕДАКТИРОВАТЬ: Чтобы было понятнее, мне нужно сделать следующее:
- Все журналы из моего собственного модуля, начиная с уровня INFO, должны войти в систему. файл
- Все журналы от внешних модулей, начиная с уровня WARNING, также должны войти в файл.
В настоящее время все журналы, начиная с INFO из моего модуля И внешние модули, регистрируются в файл.