Итак, я пытался выяснить, как можно получить динамическую отладку журнала 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-адресом запроса» в тестовом примере, который я получил.