def __init__(self, configuration_filename): self.configuration_filename = configuration_filename self.main_configuration = self.get_configuration() self.application_name = self.init_application_name() self.logger = self.init_logger() self.progress_manager = self.init_progress_manager() self.error_manager = ErrorManager() try: self.document_manager = self.init_document_manager() except Exception as e: self.logger.critical(e)
class BasicApp(object): def __init__(self, configuration_filename): self.configuration_filename = configuration_filename self.main_configuration = self.get_configuration() self.application_name = self.init_application_name() self.logger = self.init_logger() self.progress_manager = self.init_progress_manager() self.error_manager = ErrorManager() try: self.document_manager = self.init_document_manager() except Exception as e: self.logger.critical(e) def init_application_name(self): main_configuration = self.main_configuration application_configuration = main_configuration["application_configuration"] application_name = application_configuration["application_name"] return application_name def init_progress_manager(self): progress_manager = ProgressManager(self.logger) progress_manager.activate() return progress_manager def get_configuration(self): json_data = open(self.configuration_filename) data = json.load(json_data) return data def get_application_name(self): return self.application_name def init_logger(self): main_configuration = self.main_configuration logger_configuration = main_configuration["logger_configuration"] format = logger_configuration["format"] logging.basicConfig(format=format) logger = logging.getLogger(self.get_application_name()) logger.setLevel(logging.DEBUG) """ smtp_handler = self.get_smtp_handler() logger.addHandler(smtp_handler) """ file_handler = self.get_file_handler() logger.addHandler(file_handler) return logger def init_document_manager(self): database_configuration = self.main_configuration["database_configuration"] document_manager = DocumentManager(database_configuration) return document_manager def get_file_handler(self): file_handler = None if file_handler is None: try: file_handler = logging.FileHandler("logs/"+self.get_application_name() + ".log") except: pass if file_handler is None: try: file_handler = logging.FileHandler("../logs/"+self.get_application_name() + ".log") except: pass file_handler.setLevel(logging.DEBUG) return file_handler def get_smtp_handler(self): main_configuration = self.main_configuration smtp_handler_configuration = main_configuration["smtp_handler_configuration"] mailhost = smtp_handler_configuration["mailhost"] fromaddr = smtp_handler_configuration["fromaddr"] toaddrs = smtp_handler_configuration["toaddrs"] subject = self.application_name + ' : ' + smtp_handler_configuration["subject"] user = smtp_handler_configuration["user"] pwd = smtp_handler_configuration["pwd"] smtp_handler = logging.handlers.SMTPHandler(mailhost=mailhost, fromaddr=fromaddr, toaddrs=toaddrs, subject=subject, credentials=(user, pwd), secure=()) smtp_handler.setLevel(logging.INFO) return smtp_handler def step(self): self.progress_manager.step() def process(self): pass def start(self): self.logger.info("App started: " + self.get_application_name()) try: self.process() except IOError as e: self.error_manager.add(e.strerror) except Exception as e: self.error_manager.add(e) self.logger.info("App finished: " + self.get_application_name()) if self.error_manager.is_errors_exist(): errors = self.error_manager.errors.exceptions self.logger.critical(str(len(errors)) + " error(s)!") for error in errors: self.logger.critical("Error: " + str(error))