1、日志级别及格式
import logging logging.basicConfig(level=logging.DEBUG,#控制台打印的日志级别 filename='my.log', filemode='a',#写日志模式,覆盖之前的还是追加,w清空以前的日志,重新写入,a追加,保留以前的 format= '%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s', #日志格式 ) logging.debug('debug级别,最低级别,一般开发人员用来打印一些调试信息') logging.info('info级别,正常输出信息,一般用来打印一些正常的操作') logging.warning('waring级别,一般用来打印警信息') logging.error('error级别,一般用来打印一些错误信息')
日志的级别分为四级:DEBUG/INFO/WARNING/ERROR
写日志时,可以采用w模式,也可以采用a模式,区别在于前者写入时会清空之前的日志,后者保留之前的,只是追加新的
日志的格式是固定格式,在写代码的时候直接沿用就可以
2、写入日志
import logging from logging import handlers logger=logging.getLogger() #先实例化一个logger对象,先创建一个办公室 logger.setLevel(logging.DEBUG) #设置日志级别 bl=handlers.TimedRotatingFileHandler(filename='a.log',when='m',interval=1,backupCount=3,encoding='utf-8') #写日志文件,最多备份三个文件,再多,之前的文件就删除了 #when 时间 S秒 m 分钟,每秒/分钟生成一个文件 #interval 间隔时间 #backupCount 保留的文件个数 fmt=logging.Formatter('%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s') #指定日志的格式 bl.setFormatter(fmt) #设置文件里面写入的日志格式 logger.addHandler(bl) #加入办公室 logger.debug('我是debug') #debug日志级别显示内容 logger.warning('我是warning') #warning日志级别显示内容
使用日志要先实例化一个对象,设置日志的级别,日志的输出格式,以及写入的日志名称及方式(写或追加)。
可以设置文件备份的个数及生成文件的间隔时间。
3、封装写日志的类
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, 'warn':logging.WARNING, 'error':logging.ERROR } str = str.lower() return level.get(str) lw_log = MyLogger('lw.log','debug') lw_log.logger.warning('哈哈哈')