python单例模式-logging日志
单例模式:
不管实例化对象多少次,都只返回第一次实例化的对象空间。
单例的目的是:
为了节省开辟对象空间及销毁对象空间的时间。
单例日志的写法:
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')
注:文件不需要单独去判断创建文件,没有会自动创建