單例模式:
不管實例化對象多少次,都只返回第一次實例化的對象空間。
單例的目的是:
為了節省開辟對象空間及銷毀對象空間的時間。
單例日志的寫法:
import logging
log_path = r'D:\log\t.txt'
# 單例模式 class Log(object):
__flag = None
def __new__(cls, *args, **kwargs): if not cls.__flag: cls.__flag = super().__new__(cls) return cls.__flag def __init__(self): if 'logger' not in self.__dict__: logger = logging.getLogger() logger.setLevel(level=logging.DEBUG) filehandle = logging.FileHandler(log_path,encoding='utf-8') streamhandle = logging.StreamHandler() logger.addHandler(filehandle) logger.addHandler(streamhandle) format = logging.Formatter('%(asctime)s:%(levelname)s:%(lineno)s %(message)s') filehandle.setFormatter(format) streamhandle.setFormatter(format)
self.logger = logger def return_logger(self): return self.logger def get_logger(): return Log().return_logger() if __name__ == '__main__': logger = get_logger() logger.debug('zezhou')
注:文件不需要單獨去判斷創建文件,沒有會自動創建