Как создать пакет логирования с модулем «logging» на python для моих скриптов? - PullRequest
0 голосов
/ 17 июня 2019

Я пытаюсь создать пакет регистрации для моих скриптов на python, позволяющий мне регистрировать свои ошибки на сервере ELK. Проблема в том, что я не могу создать экземпляр своего класса Logging, чтобы все мои журналы присутствовали в скриптах.

В моем файле пакета я установил обработчик, который позволит мне получать все события из моих сценариев. Проблема в том, что я не могу использовать свои сообщения журнала только через класс Logging. Я вынужден использовать пакет регистрации Python в каждом из моих модулей, когда вызов уже сделан в моем пакете.

ПАКЕТНЫЕ ЛОГИ

import logging
class Logging:
    def __init__(self, module, scope, title):
        self.module = module
        self.scope = scope
        self.title = title

    def format_logs(self):
        # Configuration Logging
        logging.getLogger(__name__)
        logging.basicConfig(filename=FILE, format='%(asctime)s :: %(levelname)s :: %(message)s', datefmt='%m/%d/%Y %I:%M:%S', level=logging.DEBUG)

        # Setting up the listening file
        logging.FileHandler(FILE)

ПРИМЕРНЫЕ СКРИПТЫ

from packages.pkg_logs import Logging
import logging
def __init__(self, url):
    self.url = url
    self.init_log = Logging(self.url, SCRIPT, TITLE)
    self.set_handler = self.init_log.format_logs()
    logging.info("Starting script : %s on : %s" % (TITLE, url))

Жду ваших отзывов о решениях.

1 Ответ

0 голосов
/ 17 июня 2019

Вы должны вернуть экземпляр регистратора из вашего собственного менеджера журналов.

Пример:

log_mananger.py

class Logger:

    def __init__(filename):
        # set logging format
        logging.basicConfig()
        self.logger = logging.getLogger(filename=filename, format='set your custom format')
        # set up listening file
        self.logger.env=FILE

    def get_logger():
        return self.logger

script.py

from log_manager import Logger
logger = Logger().get_logger()
logger.info("message")

Это должно работать нормально.

В дополнение к этому, если вы хотите войти в один и тот же файл из разных частей вашего проекта, вы можетесделайте LogManager одноэлементным классом для возврата одноэлементного объекта и войдите в тот же файл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...