日志模块--logging
日志模块:logging
一、怎么形容日志模块呢?
1、日志模块就像一个办公室,办公室不同的人员负责不同的工作
2、一个人负责:负责往控制台里面输出日志信息的
3、往日志文件里面写日志的,按天生成日志,清理日志
import logging from logging import handlers #怎样将日志写入文件跟在控制台输出 #1、办公室 #2、负责往控制台里面输出日志信息 #3、往文件里面写日志的,按天生成日志,清理日志 logger=logging.getLogger()#先实例化一个logger对象,先创建一个办公室 logger.setLevel(logging.DEBUG)#设置日志的级别 #f1=logging.FileHandler(filename='a.log',mode='a',encoding='utf-8')#找到些日志的这个人,这个比较低级,舍弃 c1=logging.StreamHandler()#负责往控制台输出的 b1=handlers.TimedRotatingFileHandler(filename='a.log',when='s',interval=1,backupCount=3,encoding='utf-8') # when是间隔的时间单位,单位有以下几种: # # S 秒 # # M 分 # # H 小时、 # # D 天、 # # W 每星期(interval==0时代表星期一) # # midnight 每天凌晨 #下面指定日志的格式 fmt=logging.Formatter('%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s') c1.setFormatter(fmt)#设置控制台输出的日志格式 b1.setFormatter(fmt)#设置文件里面写入的日志格式 logger.addHandler(c1)#把已经调教好的人放到办公室 logger.addHandler(b1)#把已经调教好的人放到办公室 #指定日志的格式 logger.debug('我是debug。。。') logger.warning('我是waring...') logger.info('我是info...') logger.error('我是error...')
#结果:
二、封装日志类模块
将日志封装成一个类,变成一个模块,需要的时候直接导入该模块调用日志类方法:
import logging from logging import handlers class MyLogger(): def __init__(self,file_name,level='info',backCount=5,when='D'): logger = logging.getLogger() # 先实例化一个logger对象,先创建一个办公室 logger.setLevel(self.get_level(level)) # 设置日志的级别的人 cl = logging.StreamHandler() # 负责往控制台输出的人 bl = handlers.TimedRotatingFileHandler(filename=file_name, when=when, interval=1, backupCount=backCount, encoding='utf-8') fmt = logging.Formatter('%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s')#日志格式 cl.setFormatter(fmt) # 设置控制台输出的日志格式 bl.setFormatter(fmt) # 设置文件里面写入的日志格式 logger.addHandler(cl) logger.addHandler(bl) self.logger = logger def get_level(self,str): level = { 'debug':logging.DEBUG, 'info':logging.INFO, 'warning':logging.WARNING, 'error':logging.ERROR } str = str.lower() return level.get(str) lw_log = MyLogger('lw.log','debug') lw_log.logger.warning('哈哈哈') #