Как вести динамический c вход в разные скрипты - PullRequest
0 голосов
/ 01 мая 2020

Итак, я пытался выяснить, как можно получить динамическую отладку журнала c, где мне нужно всего лишь отправить «vendors / filepath» в функцию регистрации, и она автоматически c отправит его туда.

from lib.utils import LoggingDebug
import requests

class A(object):

    def __init__(self):
        self.logging = LoggingDebug(vendors='./lib/vendors/testmap/logs/test_logs')

    def getFeed(self):

       try:

           int("hello")

       except Exception as err:
           self.logging.debug(f'Exception: {sys.exc_info()[0]} : {sys.exc_info()[1]}')
           time.sleep(random.randint(1, 3))
           continue

----------------------------------------------------------------------------------

import logging
import logging.handlers as handlers

class SizedTimedRotatingFileHandler(handlers.TimedRotatingFileHandler):
    """
    Handler for logging to a set of files, which switches from one file
    to the next when the current file reaches a certain size, or at certain
    timed intervals
    """

    def __init__(self, filename, maxBytes=0, backupCount=0, encoding=None,
                 delay=0, when='h', interval=1, utc=False):
        handlers.TimedRotatingFileHandler.__init__(
            self, filename, when, interval, backupCount, encoding, delay, utc)
        self.maxBytes = maxBytes

    def shouldRollover(self, record):
        """
        Determine if rollover should occur.

        Basically, see if the supplied record would cause the file to exceed
        the size limit we have.
        """
        if self.stream is None:  # delay was set...
            self.stream = self._open()
        if self.maxBytes > 0:  # are we rolling over?
            msg = "%s\n" % self.format(record)
            # due to non-posix-compliant Windows feature
            self.stream.seek(0, 2)
            if self.stream.tell() + len(msg) >= self.maxBytes:
                return 1
        t = int(time.time())
        if t >= self.rolloverAt:
            return 1
        return 0

class LoggingDebug:

    def __init__(self, vendors=None):
        self.vendors = vendors
        self.SizedTimedRotatingFileHandler = SizedTimedRotatingFileHandler

    def loggingDebug(self, vendors):

        log_filename = vendors
        logger = logging.getLogger('MyLogger')
        logger.setLevel(logging.DEBUG)
        formatter = logging.Formatter('[%(asctime)s]:%(levelname)s:%(funcName)s - %(message)s', "%d-%m-%Y %H:%M:%S")
        handler = self.SizedTimedRotatingFileHandler(
            log_filename, maxBytes=20000000, backupCount=5, when='s', interval=86400,
        )
        handler.setFormatter(formatter)
        logger.addHandler(handler)

Моя проблема в том, что я получаю:

AttributeError: 'LoggingDebug' object has no attribute 'debug'

, и я не знаю, что я делаю неправильно, и что я хочу сделать, это сделать self.loggingDebug. debug («Текст») должен регистрировать проблему в def loggingDebug(self, vendors):, поэтому в этом случае он должен распечатать что-то с «недопустимым URL-адресом запроса» в тестовом примере, который я получил.

...