今天讲讲日志模块logging如何使用。
一、第一种用法,直接往控制台输出
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级别,一般用来打印一些错误信息')
二,第二种往文件里写,同时往控制台输出
#1、办公室 #2、负责往控制台里面输出日志信息的 #3、往日志文件里面写日志的,按天生成日志,清理日志 from logging import handlers logger = logging.getLogger() #先实例化一个Log对象,先创建一个办公室 logger.setLevel(logging.DEBUG) # fl = logging.FileHandler(filename='a.log', mode='a',encoding='utf-8') #找到写日志文件的这个人,这个用户没有一面的b1的方法好,尽量不要用 c1 = logging.StreamHandler() #负责往控制台输出的 bl = handlers.TimedRotatingFileHandler(filename='a.log', when='S',interval=1,backupCount=5,encoding='utf-8') #往文件里写 fmt = logging.Formatter('%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s') c1.setFormatter(fmt) #设置控制台输出的日志格式 bl.setFormatter(fmt) #设置文件里面的写入的日志格式 logger.addHandler(c1) #把已经调较好的人放到办公室里 logger.addHandler(bl) #指定日志的格式 logger.debug('我是debug。。。') logger.warning('我是waring...') #1、先看看,是不是控制台也用了,文件里面也有了,中文也不是乱码了 #2、每秒运行一次,看看是不是每秒都会产生一个文件 #3、再看看是不是帮你备份3个
三、封装Logging类
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) mylog = MyLogger('my.log','debug') #实例化,调用 mylog.logger.warning('哈哈哈')