建立基本日志类:网络
import logging from logging import handlers FORMAT = '%(acstime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s - %(message)s' # 设置日志格式 class Logger(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): """ :param filename: 写入日志的文件名 :param level: 日志级别 :param when: 日志切分周期 :param backcount: 每完成一个周期的日志写入文件,最多保留的 日志文件数,旧的日志文件将被删除 :param fmt: 日志格式 """ self.logger = logging.getLogger(filename) fmt_str = logging.Formatter(fmt) # 日志格式 self.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)
建立log对象,日志级别为'DEBUG'及以上的写入日志文件:debug
log = Logger(filename='all.log', level='debug').logger
建立Student类,属性score只能为整数类型:日志
class Student(object): def __init__(self, name, id): self.name = name self.id = id log.info(f'{student name:{name}, id:{id}}') @property def score(self): return self.__score @score.setter def score(self, score): if isinstance(score, int) self.__score = score log.info(f'{student {name} got {self.score}}') else: log.error(f'学生分数类型错误,应该为整型!') raise TypeError(f'学生分数类型错误,应该为整型!')
实例化Student类:code
xiaoming = Student(10086, 'xiaoming') xiaoming.score = 90 xiaohong = Student(10010, 'xiaohong') xiaohong.score = 90.6
整理自网络,侵删。orm