1ba991379Sopenharmony_ci# encoding=utf-8 2ba991379Sopenharmony_cifrom util import time_info 3ba991379Sopenharmony_ci 4ba991379Sopenharmony_ciimport os 5ba991379Sopenharmony_ciimport sys 6ba991379Sopenharmony_ci 7ba991379Sopenharmony_ci 8ba991379Sopenharmony_ciclass Singleton(): 9ba991379Sopenharmony_ci _instance = None 10ba991379Sopenharmony_ci def __new__(cls, *args, **kw): 11ba991379Sopenharmony_ci if not hasattr(cls, '_instance'): 12ba991379Sopenharmony_ci cls._instance = super(Singleton, cls).__new__(cls, *args, **kw) 13ba991379Sopenharmony_ci else: 14ba991379Sopenharmony_ci return cls._instance 15ba991379Sopenharmony_ci 16ba991379Sopenharmony_ciclass Logger(): 17ba991379Sopenharmony_ci 18ba991379Sopenharmony_ci __info = "[INFO ]" 19ba991379Sopenharmony_ci __error = "[ERROR ]" 20ba991379Sopenharmony_ci __debug = "[DEBUG ]" 21ba991379Sopenharmony_ci __warning = "[WARNING ]" 22ba991379Sopenharmony_ci 23ba991379Sopenharmony_ci __user = "[USER]" 24ba991379Sopenharmony_ci 25ba991379Sopenharmony_ci log_file_path = "" 26ba991379Sopenharmony_ci 27ba991379Sopenharmony_ci def __init__(self): 28ba991379Sopenharmony_ci pass 29ba991379Sopenharmony_ci 30ba991379Sopenharmony_ci 31ba991379Sopenharmony_ci def switchFilePath(self, path): 32ba991379Sopenharmony_ci self.log_file_path = path 33ba991379Sopenharmony_ci self.printLog("Write detail log to File: %s" % path) 34ba991379Sopenharmony_ci 35ba991379Sopenharmony_ci 36ba991379Sopenharmony_ci def __printMessage(self, type, msg, log_level='developer'): 37ba991379Sopenharmony_ci ''' 38ba991379Sopenharmony_ci #==================================================================================== 39ba991379Sopenharmony_ci # @Method: __printMessage() 40ba991379Sopenharmony_ci # @Precondition: none 41ba991379Sopenharmony_ci # @Func: print the log 42ba991379Sopenharmony_ci # @PostStatus: none 43ba991379Sopenharmony_ci # @Param: type, log type:info, debug, error or worning 44ba991379Sopenharmony_ci # @Param: msg, log message 45ba991379Sopenharmony_ci # @Example: logger.__printMessage(self.__info, "test") 46ba991379Sopenharmony_ci # @Author: zwx205888 47ba991379Sopenharmony_ci # @ModifyRecord: None 48ba991379Sopenharmony_ci #==================================================================================== 49ba991379Sopenharmony_ci ''' 50ba991379Sopenharmony_ci 51ba991379Sopenharmony_ci time_str = time_info.get_now_time_str_info() 52ba991379Sopenharmony_ci filename = "unknow file" 53ba991379Sopenharmony_ci lineno_str = "unknow line number" 54ba991379Sopenharmony_ci try: 55ba991379Sopenharmony_ci f = sys._getframe(2) 56ba991379Sopenharmony_ci filename = os.path.basename(f.f_code.co_filename) 57ba991379Sopenharmony_ci lineno_str = str(f.f_lineno) 58ba991379Sopenharmony_ci except Exception as e: 59ba991379Sopenharmony_ci print(e) 60ba991379Sopenharmony_ci log_message = "%s : [%s - %s line: %s - %s]" % (type, time_str, filename, lineno_str, msg) 61ba991379Sopenharmony_ci# print(log_message) 62ba991379Sopenharmony_ci self.printIntoLogFile(log_message, log_level) 63ba991379Sopenharmony_ci 64ba991379Sopenharmony_ci def printIntoLogFile(self, log_message, log_level): 65ba991379Sopenharmony_ci if log_level == 'user': 66ba991379Sopenharmony_ci print(log_message) 67ba991379Sopenharmony_ci 68ba991379Sopenharmony_ci param_file_path, _ = os.path.split(self.log_file_path) 69ba991379Sopenharmony_ci if not os.path.exists(param_file_path): 70ba991379Sopenharmony_ci os.makedirs(param_file_path) 71ba991379Sopenharmony_ci with open(self.log_file_path, 'a', encoding='utf-8') as f: 72ba991379Sopenharmony_ci f.write(log_message + '\n') 73ba991379Sopenharmony_ci 74ba991379Sopenharmony_ci def printLog(self, log_message): 75ba991379Sopenharmony_ci self.__printMessage(self.__info, log_message, 'user') 76ba991379Sopenharmony_ci 77ba991379Sopenharmony_ci def info(self, msg): 78ba991379Sopenharmony_ci ''' 79ba991379Sopenharmony_ci #==================================================================================== 80ba991379Sopenharmony_ci # @Method: info() 81ba991379Sopenharmony_ci # @Precondition: none 82ba991379Sopenharmony_ci # @Func: print the log of info type 83ba991379Sopenharmony_ci # @PostStatus: none 84ba991379Sopenharmony_ci # @Param: msg, log message 85ba991379Sopenharmony_ci # @Example: logger.info("test") 86ba991379Sopenharmony_ci # @Author: zwx205888 87ba991379Sopenharmony_ci # @ModifyRecord: None 88ba991379Sopenharmony_ci #==================================================================================== 89ba991379Sopenharmony_ci ''' 90ba991379Sopenharmony_ci self.__printMessage(self.__info, msg) 91ba991379Sopenharmony_ci 92ba991379Sopenharmony_ci def error(self, msg): 93ba991379Sopenharmony_ci ''' 94ba991379Sopenharmony_ci #==================================================================================== 95ba991379Sopenharmony_ci # @Method: error() 96ba991379Sopenharmony_ci # @Precondition: none 97ba991379Sopenharmony_ci # @Func: print the log of error type 98ba991379Sopenharmony_ci # @PostStatus: none 99ba991379Sopenharmony_ci # @Param: msg, log message 100ba991379Sopenharmony_ci # @Example: logger.error("test") 101ba991379Sopenharmony_ci # @Author: zwx205888 102ba991379Sopenharmony_ci # @ModifyRecord: None 103ba991379Sopenharmony_ci #==================================================================================== 104ba991379Sopenharmony_ci ''' 105ba991379Sopenharmony_ci self.__printMessage(self.__error, msg) 106ba991379Sopenharmony_ci 107ba991379Sopenharmony_ci def debug(self, msg): 108ba991379Sopenharmony_ci ''' 109ba991379Sopenharmony_ci #==================================================================================== 110ba991379Sopenharmony_ci # @Method: debug() 111ba991379Sopenharmony_ci # @Precondition: none 112ba991379Sopenharmony_ci # @Func: print the log of debug type 113ba991379Sopenharmony_ci # @PostStatus: none 114ba991379Sopenharmony_ci # @Param: msg, log message 115ba991379Sopenharmony_ci # @Example: logger.debug("test") 116ba991379Sopenharmony_ci # @Author: zwx205888 117ba991379Sopenharmony_ci # @ModifyRecord: None 118ba991379Sopenharmony_ci #==================================================================================== 119ba991379Sopenharmony_ci ''' 120ba991379Sopenharmony_ci 121ba991379Sopenharmony_ci self.__printMessage(self.__debug, msg) 122ba991379Sopenharmony_ci 123ba991379Sopenharmony_ci def warning(self, msg): 124ba991379Sopenharmony_ci ''' 125ba991379Sopenharmony_ci #==================================================================================== 126ba991379Sopenharmony_ci # @Method: warning() 127ba991379Sopenharmony_ci # @Precondition: none 128ba991379Sopenharmony_ci # @Func: print the log of warning type 129ba991379Sopenharmony_ci # @PostStatus: none 130ba991379Sopenharmony_ci # @Param: msg, log message 131ba991379Sopenharmony_ci # @Example: logger.warning("test") 132ba991379Sopenharmony_ci # @Author: zwx205888 133ba991379Sopenharmony_ci # @ModifyRecord: None 134ba991379Sopenharmony_ci #==================================================================================== 135ba991379Sopenharmony_ci ''' 136ba991379Sopenharmony_ci 137ba991379Sopenharmony_ci self.__printMessage(self.__warning, msg) 138ba991379Sopenharmony_ci 139ba991379Sopenharmony_ci''' 140ba991379Sopenharmony_ci# use logger object 141ba991379Sopenharmony_ci''' 142ba991379Sopenharmony_cilogger = Logger() 143