Files
ai0824_0919/log.py
T
2026-09-19 14:49:08 +08:00

65 lines
3.2 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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 )