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模块封装后应用在自动化测试中生成测试日志。








                    
当你试图去用自己的言语去讲清一些事物时,你会明白对此事物的理解是融会贯通还是一知半解
原文地址:https://www.cnblogs.com/1211-1010/p/12402462.html