python内置库logging的使用
logging为python内置库,提供记录日志功能
常见的logging用法如下:
1.指定文件日志输出:
""" logging内置库: log级别划分: -1、notset 0 伪级别,仅做用户定义级别的下限存在 -2、debug 10 全部日志,一般为调试信息 -3、info 20 主要功能模块信息 info及其等级以上的全部日志 -4、warning 30 警告信息 -5、error 40 错误信息 -6、critical 50 极其严重的错误信息
设置日志格式logging.Formatter的参数如下: %(name)s 记录器名称 %(levelno)s 消息的数字记录级别 (DEBUG, INFO,WARNING, ERROR, CRITICAL) %(levelname)s 消息文本的记录级别 ("DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL") %(pathname)s 发出记录日志源文件的完整路径名 %(filename)s 路径名的顽文件名部分 %(module)s 模块,文件名的名称部分 %(lineno)d 发出日志调用记录的源行号(即:这条日志信息是运行该代码文件的第多少行而产生的) %(funcName)s 功能名 %(created)f 创建日志记录的时间,格式为:time.time() 的返回值,时间格1583216609.5454457 %(asctime)s 创建日志文本记录的时间,格式如:2020-03-03 15:22:35 %(msecs)d 创建日志记录时间的毫秒部分 %(relativeCreated)d 创建日志记录的时间,以毫秒为单位,相当于加载日志模块的时间,常在应用程序启动时 %(thread)d 线程ID %(threadName)s 线程名 %(process)d 进程ID %(message)s 日志的消息体 """ import logging #设置日志记录器, 日志集 logger = logging.getLogger('loggingtest') #设置日志集级别 logger.setLevel('DEBUG') #添加日志记录要保存到的文件,不写路径默认保存到和该程序相同的路径下 handler = logging.FileHandler('log.txt') #设置保存文件中的日志级别 handler.setLevel('DEBUG') #设置日志打印格式 formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s") #为日志记录文件加入上述设置的日志格式 handler.setFormatter(formatter) #将日志记录文件加入到日志集 logger.addHandler(handler) logger.info('Start print log') logger.debug('Do something') logger.warning('Something maybe fail') logger.info('Finish')
上述代码运行结果保存在和代码文件相同目录下的log.txt中,具体形成日志信息如下:
2020-03-03 16:25:27,670 - loggingtest - INFO - Start print log
2020-03-03 16:25:27,670 - loggingtest - DEBUG - Do something
2020-03-03 16:25:27,670 - loggingtest - WARNING - Something maybe fail
2020-03-03 16:25:27,670 - loggingtest - INFO - Finish
其中调整logger和handler级别都可以对日志进行筛选,上述列子中的日志级别都为debug,则日志将记录高于并等于该级别的信息。比如将logger级别调整为info,则结果如下:
2020-03-03 16:34:25,410 - loggingtest - INFO - Start print log
2020-03-03 16:34:25,410 - loggingtest - WARNING - Something maybe fail
2020-03-03 16:34:25,410 - loggingtest - INFO - Finish
即logger和handler中级别设置较高的那个做为日志记录信息级别的下限。
2.控制台和文件日志同时输出:
同理控制台日志输出只需在上面代码添加控制台输出方法调用即可:
import logging #设置日志记录器, 日志集 logger = logging.getLogger('loggingtest') #设置日志集级别 logger.setLevel('INFO') #添加日志记录要保存到的文件,不写路径默认保存到和该程序相同的路径下 handler = logging.FileHandler('log.txt') #设置保存文件中的日志级别 handler.setLevel('DEBUG') #控制台日志输出 console = logging.StreamHandler() console.setLevel("INFO") #设置日志打印格式 formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s") #为日志记录文件加入上述设置的日志格式 handler.setFormatter(formatter) console.setFormatter(formatter) #将日志记录文件加入到日志集 logger.addHandler(handler) #将控制台日志打印加入到日志集 logger.addHandler(console) logger.info('Start print log') logger.debug('Do something') logger.warning('Something maybe fail') logger.info('Finish')
当然,也可单独输出日志信息到控制台。
以上为logging常用用法,后面会记录logging模块封装后应用在自动化测试中生成测试日志。
当你试图去用自己的言语去讲清一些事物时,你会明白对此事物的理解是融会贯通还是一知半解