#日志记录到多文件示例
1 import logging 2 3 def error_log(message): 4 file_1_1 = logging.FileHandler('error.log', 'a+', encoding='utf-8') 5 fmt = logging.Formatter(fmt="%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s") 6 file_1_1.setFormatter(fmt) 7 # 创建日志对象 8 logger1 = logging.Logger('error', level=logging.ERROR) 9 # 日志对象和文件对象创建关系 10 logger1.addHandler(file_1_1) 11 12 logger1.log(logging.FATAL,message) 13 14 def run_log(message): 15 file_1_1 = logging.FileHandler('run.log', 'a+', encoding='utf-8') 16 fmt = logging.Formatter(fmt="%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s") 17 file_1_1.setFormatter(fmt) 18 # 创建日志对象 19 logger1 = logging.Logger('run', level=logging.ERROR) 20 # 日志对象和文件对象创建关系 21 logger1.addHandler(file_1_1) 22 23 logger1.log(logging.FATAL,message)
#日志记录到单个文件示例
import logging
logging.basicConfig(
filename="11.log",
format="%(asctime)s - %(name)s - %(levelname)s - %(module)s : %(message)s",
datefmt='%Y-%m-%d %H:%M:%S %p',
level=logging.INFO
)
logging.log(logging.ERROR,"MESSAGE....")
#单例模式
1 import logging 2 3 class LoggerHelper(object): 4 _i = None 5 6 @classmethod 7 def instance(cls): 8 if cls._i: 9 return cls._i 10 else: 11 cls._i = LoggerHelper() #LoggerHelper() 12 return cls._i # obj 13 14 def __init__(self): 15 error_log = logging.FileHandler('error.log', 'a+', encoding='utf-8') 16 fmt = logging.Formatter(fmt="%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s") 17 error_log.setFormatter(fmt) 18 # 创建日志对象 19 error_logger = logging.Logger('error', level=logging.ERROR) 20 # 日志对象和文件对象创建关系 21 error_logger.addHandler(error_log) 22 self.error_logger = error_logger 23 24 run_log = logging.FileHandler('run.log', 'a+', encoding='utf-8') 25 fmt = logging.Formatter(fmt="%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s") 26 run_log.setFormatter(fmt) 27 # 创建日志对象 28 run_logger = logging.Logger('run', level=logging.ERROR) 29 # 日志对象和文件对象创建关系 30 run_logger.addHandler(run_log) 31 self.run_logger = run_logger 32 33 34 if __name__ == '__main__': 35 #调用 36 # 单例模式,用户获得第一次创建的对象 37 obj1 = LoggerHelper.instance() 38 obj1.run_logger.log(logging.FATAL,'asdfasdfasdfasdf') 39 40 obj2 = LoggerHelper.instance() 41 obj2.run_logger.log(logging.FATAL,'asdfasdfasdfasdf') 42 43 obj3 = LoggerHelper.instance() 44 obj3.run_logger.log(logging.FATAL,'asdfasdfasdfasdf')
#只创建一个实例的设计模式
cls为类名
1 class Foo(object): 2 _i = None 3 def __init__(self): 4 self.n = 123 5 def __new__(cls, *args, **kwargs): 6 if cls._i: 7 return cls._i 8 else: 9 o = object.__new__(cls,*args,**kwargs) 10 cls._i = o 11 return cls._i 12 13 obj1 = Foo() 14 obj2 = Foo()