Конфигурация проекта:
- src/
|-- classes/
|-- Logger.py
|-- Browser.py
|-- ubigeo.py
- main.py
Я пытаюсь использовать настройку python-logstash-logger
в Logger.py
классе для печати журналов в Browser.py
классе, ubigeo.py
и main.py
скриптах:
#Logger.py
import logging, logstash
class LoggerSingleton:
_shared_state = {}
def __init__(self):
self.__dict__ = self._shared_state
class Logger(LoggerSingleton):
def __init__(self):
LoggerSingleton.__init__(self)
self.logger = self.init_console_logger()
def init_console_logger(self):
logger = logging.getLogger('python-logstash-logger')
logger.setLevel('DEBUG')
formatter = logging.Formatter('%(asctime)s : %(levelname)s : %(message)s')
sh = logging.StreamHandler()
sh.setLevel(logging.INFO)
sh.setFormatter(formatter)
logger.addHandler(sh)
return logger
def log(self, message):
self.logger.info(message)
Основная проблема заключается в том, что когда у меня несколько экземпляров одного класса, журнал печатается несколько раз.
#main.py
from src.classes import Logger
if __name__ == "__main__":
logger_handler = Logger()
logger_handler.log('Checking python version...')
ubigeo.main()
#Browser.py
from .Logger import Logger
class Browser(Config, Logger):
def __init__(self):
self.logger = Logger()
self.logger.log('Setting up & launching a browser')
#ubigeo.py
from .classes.Browser import Browser
def main():
browser_handler = Browser()
Результат журнала прямо сейчас:
2019-04-21 13:25:12,758 : INFO : Checking python version...
2019-04-21 13:25:12,915 : INFO : Setting up & launching a browser
2019-04-21 13:25:12,915 : INFO : Setting up & launching a browser
и желаемый результат -
2019-04-21 13:25:12,758 : INFO : Checking python version...
2019-04-21 13:25:12,915 : INFO : Setting up & launching a browser