import logging ''' 使用日志的六个步骤: ①定义lgger日志器(谁来产生日志,默认是root): lg = logging.getLogger( 'abc' ) ②设置日志等级: lg.setLevel( logging.INFO ) ③定义handlers(产生的日志输出到哪里,到控制台还是文件): con_hand = logging.StreamHandler() ④定义formatter日志打印格式,并绑定handlers con_hand = logging.StreamHandler() # ③定义handlers(产生的日志输出到哪里,到控制台还是文件) formatter = logging.Formatter( '%(asctime)s - %(name)s - %(levelname)s - %(message)s' ,datefmt='%Y-%m-%d %H:%M:%S' # 定义时间的格式 ) # ④定义formatter日志打印格式,并绑定handlers con_hand.setFormatter( formatter ) # 并绑定handlers ⑤将handlers的处理添加到日志器进行记录 lg.addHandler( con_hand ) ⑥打印日志测试 lg.info('xxxx') lg.debug('xxx') ''' class Log: def __init__(self,name,lv): self.logName = logging.getLogger( name ) # ①定义lgger日志器 self.logName.setLevel( eval( f'logging.{lv.upper()}' ) ) # ②设置日志等级 self.formatter = logging.Formatter( '%(asctime)s - %(name)s - %(levelname)s - %(message)s' ,datefmt='%Y-%m-%d %H:%M:%S' # 定义时间的格式 ) # ④定义formatter日志打印格式,并绑定handlers self.handlers = self.logName.handlers # 定义属性来接收 handlers,方便外部查看有没有添加handlers def logConsol(self): con_hand = logging.StreamHandler() # ③定义handlers(产生的日志输出到哪里,到控制台还是文件) con_hand.setFormatter( self.formatter ) # 并绑定handlers if 'StreamHandler' not in str(self.handlers): # 如果绑定输出到控制台已经绑定好了,就不会重复绑定了 self.logName.addHandler( con_hand ) # ⑤将handlers的处理添加到日志器进行记录 def logFile(self,fileName): file_hand = logging.FileHandler( fileName,encoding='utf-8' ) # ③定义handlers file_hand.setFormatter( self.formatter ) if 'FileHandler' not in str(self.handlers): self.logName.addHandler(file_hand) # ⑤将handlers的处理添加到日志器 def message(self,lv,mes): lv = lv.lower() # 把日志等级处理成小写 if lv == 'debug': self.logName.debug( mes ) elif lv == 'info': self.logName.info(mes) elif lv == 'warning': self.logName.warning(mes) elif lv == 'error': self.logName.error(mes) elif lv == 'critical': self.logName.critical(mes) else: print('请输入正确的日志级别!') if __name__ == '__main__': lg1 = Log('ai0824','InFo') lg1.logConsol() lg1.message( 'info','这是info日志...' ) lg1.message('warning', '这是warning日志...') lg1.logFile('ai0824.log') lg1.message( 'error','这是error级别的日志...' ) lg1.logConsol() lg1.message('info', '这是info日志...') print( lg1.handlers )