У меня есть 3 класса:
Class1 -> Использует SameClassA -> Использует SameClassB
Class2 -> Использует SameClassA -> Использует SameClassB
Унаследованные / реализующие классы, обозначенные как «Class1» и «Class2», используют одни и те же классы «SameClassA» и «SameClassB», которые не наследуются / не реализуются.
В каждом из этих классов я использую одну и ту же функцию initLogger (). Реализация функции initLogger () (имя регистратора, файлы регистратора и т. Д. c.) Различна для «Class1» и «Class2»; однако это то же самое для «SameClassA» и «SameClassB» (одинаковое имя регистратора, одинаковые файлы регистратора и c.).
Я заметил, что в моей функции initLogger () произошла ошибка при создании экземпляра SameClassA в то время, когда несколько экземпляров SameClassA уже были созданы. К сожалению, поскольку регистратора не было, у меня нет трассировки стека.
Однако я хотел бы знать, вызывает ли эта конфигурация проблему и что я могу сделать для ее решения?
Вот моя функция initLogger :
def initLogger(self, infoLog=True, debugLog=True, consoleLog=True):
try:
parentLogDir = os.path.join(os.getcwd(), 'UniversalThreadLogs')
if not os.path.exists(parentLogDir):
os.mkdir(parentLogDir)
infoLogDir = os.path.join(parentLogDir, 'INFOLog')
if not os.path.exists(infoLogDir):
os.mkdir(infoLogDir)
errorLogDir = os.path.join(parentLogDir, "ERRORLog")
if not os.path.exists(errorLogDir):
os.mkdir(errorLogDir)
infoLogFilepath = os.path.join(infoLogDir, "UTInfoLog.log")
debugLogFilepath = os.path.join(errorLogDir, "UTErrorLog.log")
LOG_FORMAT = ("%(asctime)s [%(levelname)s]: %(message)s in %(pathname)s:%(lineno)d")
debugHandler = logging.handlers.RotatingFileHandler(filename=debugLogFilepath,maxBytes=5000000, backupCount=100)
debugHandler.setLevel(logging.ERROR)
debugHandler.setFormatter(Formatter(LOG_FORMAT))
infoHandler = logging.handlers.RotatingFileHandler(filename=infoLogFilepath,maxBytes=5000000, backupCount=100)
infoHandler.setLevel(logging.INFO)
infoHandler.setFormatter(Formatter(LOG_FORMAT))
stream_handler = logging.StreamHandler()
stream_handler.setLevel(logging.INFO)
stream_handler.setFormatter(Formatter(LOG_FORMAT))
UTLogger = logging.getLogger("UThread")
if infoLog is True:
UTLogger.addHandler(infoHandler)
if debugLog is True:
UTLogger.addHandler(debugHandler)
if consoleLog is True:
UTLogger.addHandler(stream_handler)
return UTLogger
except:
return False
Как уже упоминалось, для «SameClassA» и «SameClassB» указанная выше реализация initLogger () одинакова для соответствующего класса с теми же файлами / каталогами и тем же именем регистратора «UThread», например.
Спасибо