Files
ai0824_0919/log.py
T

65 lines
3.2 KiB
Python
Raw Normal View History

2026-09-19 14:49:08 +08:00
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 )