本文主要内容:创建基础log类实现日志同时输出到控制台和写入文件的功能创建了一个Student类,score属性只能是整数。实例化Student类,给score赋不同的值,验证基本日志类的功能创建基本日志类:importloggingfromloggingimporthandlersFORMAT='%(acstime)s-%(pathname)s[line:%(lineno)d]-%(levelname)s-%(message)s'#设置日志格式classLogger(object):#日志级别关系映射kv={'debug':logging.DEBUG,'info':logging.INFO,'warning':logging.WARNING,'error':logging.ERROR,'crit':logging.CRITICAL}def__init(self,filename,level='info',when='D',backcount=3,fmt=FORMAT):""":paramfilename:写入日志的文件名:paramlevel:日志级别:paramwhen:日志拆分周期:parambackcount:每次循环时日志写入文件已完成,要保留的最大日志文件数,旧日志文件将被删除:paramfmt:logformat"""self.logger=logging.getLogger(filename)fmt_str=logging.Formatter(fmt)#logformatself.logger.setLevel(self.kv.get(level))#日志等级sh=logging.StreamHandler()#输出到控制台sh.setFormatter(fmt_str)#控制台日志输出格式th=handlers.TimedRotatingFileHandler(filename,when=when,backupCount=backupcount,encoding='utf-8')th.setFormatter(fmt_str)self.logger.addHandler(sh)self.logger.addHandler(th)创建日志对象,并写入日志级别为'DEBUG'及以上的日志文件:log=Logger(filename='all.log',level='debug').logger创建Student类,属性score只能是整数类型:classStudent(object):def__init__(self,name,id):self.name=nameself.id=id日志。info(f'{学生姓名:{name},id:{id}}')@propertydefscore(self):returnself.__score@score.setterdefscore(self,score):ifisinstance(score,int):self.__score=scorelog.info(f'{student{name}got{self.score}}')else:log.error(f'学生的分数类型错误,应该是整数!')raiseTypeError(f'学生的分数类型错误,应该是整数!')实例化Student类:xiaoming=Student(10086,'xiaoming')xiaoming.score=90xiaohong=Student(10010,'xiaohong')xiaohong.score=90.6整理自网络,入侵
