从零搭建完整python自动化测试框架logging日志模块详解

目录:导读

    • 前言
    • 一、logging模块介绍
    • 二、输出日志到日志文件
    • 三、日志级别的讲解及设置
    • 四、总结


前言

logging: 看作一个办公室

logger: 看作办公室的一台打印机

FileHandler: 看作薄文件纸

StreamHandler: 看作厚文件纸

认识了以上几个东西,就好办了,要写日志,就是要打印文件,先从办公室获取打印机,再从办公室获取薄文件纸和厚文件纸,然后把文件纸格式处理下,放到打印机里面,最后开始打印信息就行了。

下面我们就来详细分析一下logging日志模块

一、logging模块介绍

是Python内置的标准模块,主要用于输出运行日志

为什么要使用日志?

日志: 系统在运行过程中的一些信息,系统日志、运行日志、错误日志、用户操作等等

要求:1. 所有日志需要可查,所有的日志需要保留下来,可以查看

2.日志需要分级别设置

二、输出日志到日志文件

控制台日志

import logging

logger = logging.getLogger(__name__)
logger.setLevel(level=logging.INFO)


#创建一个控制台输出的日志对象
console=logging.StreamHandler()
#设置日志的格式
formatter=logging.Formatter(%(asctime)s – %(filename)s[line:%(lineno)d]%(levelname)s: %(message)s’)

console.setFormatter(formatter)
logger.addHandler(console)
logger.debug('—–调试信息[debug]—–')

logger.info(‘—–有用的信息[info]—–‘)

logger.warning('—–警告信息[warning]—–')

logger.error('—–错误信息[error]—–')

logging.critical('—–严重错误信息[critical]—–')

输出日志到log文件

import os
import logging
#设置日志路径
current_path=os.path.dirname(__file__)
log_path=os.path.join(current_path,../logs/test.log’)
#创建logger日志对象
logger = logging.getLogger(__name__)
logger.setLevel(level=logging.INFO)
#创建一个文件输出的日志对象
file_log=logging.FileHandler(log_path)
#设置日志格式
formatter=logging.Formatter(file:%(asctime)s – %(filename)s[line:%(lineno)d]%(levelname)s: %(message)s’)
file_log.setFormatter(formatter)
#把文件输出的日志对象 传给logger日志对象
logger.addHandler(file_log)
logger.debug(''—–调试信息[debug]—–'')
logger.info(''—–有用的信息[info]—–'')
logger.warning(''—–警告信息[warning]—–'')
logger.error(''—–错误信息[error]—–'')
logger.critical(''—–严重错误信息[critical]—–'')

logger.info(‘Hello word!!!’)

把控制台输出日志,文件输出日志放一起

encoding: utf-8
# @author: newdream_daliu
# @file: log_demo2.py
# @time: 2022-10-06 17:03
# @desc: 输出日志到文件
import os
import logging

#设置log日志文件的存放位置
current_path=os.path.dirname(__file__)
log_path=os.path.join(current_path,../logs/2022_10_06_test.log’)
# print(log_path)
logger=logging.getLogger(__name__)
logger.setLevel(level=logging.INFO)

#控制台日志
console=logging.StreamHandler()
formatter=logging.Formatter(%(asctime)s – %(filename)s[line:%(lineno)d]%(levelname)s: %(message)s’)
console.setFormatter(formatter)
logger.addHandler(console)

#文件日志
#创建一个log文件日志对象
file_log=logging.FileHandler(log_path,encoding=‘utf-8)
#设置文件日志输出格式
formatter=logging.Formatter(file:%(asctime)s – %(filename)s[line:%(lineno)d]%(levelname)s: %(message)s’)
file_log.setFormatter(formatter)
logger.addHandler(file_log)

logger.info(''——-新梦想IT职业教育———–'')
logger.error(''———测试失败,元素识别失败————-'')
logger.debug(''—–调试信息[debug]—–'')
logger.info(''—–有用的信息[info]—–'')
logger.warning(''—–警告信息[warning]—–'')
logger.error(''—–错误信息[error]—–'')
logger.critical(''—–严重错误信息[critical]—–'')

三、日志级别的讲解及设置

DEBUG:调试信息
INFO:有用的信息
WARNING:警告信息 (默认日志级别)
ERROR:错误信息
CRITICAL:严重错误信息
NOTSET:非级别,表示不设置,按照父logger级别来过滤日志

方式1:

日志级别关系:

NOTSET < DEBUG < INFO < WARNING < ERROR < CRITICAL

备注:如果把log的级别设置为INFO, 那么小于INFO级别的日志都不输出, 大于等于INFO级别的日志都输出。也就是说,日志级别越高,打印的日志越不详细。

方式2:

log日志级别 NOTSET=0,DEBUG=10 INFORO=20 WARNING=30 ERROR=40 CRITICAL=50

找到setLevel,设置为具体的数字

logger.setLevel(level=40)

四、总结

坚持做自己,不是一意孤行,而是在市场竞争中,随缘而不变,稳定的贯彻自己的棋风棋路,非达目标,绝不中止。

在人生中,有时最好走的路不一定是大路,而是小路;在现实中,有时最便捷的路不一定是直路,而是折路。

人有两条路要走,一条是必须走的,一条是想走的,你必须把必须走的路走漂亮,才可以走想走的路。

你可能感兴趣的:(测试,自动化测试,软件测试,软件测试,自动化测试,测试开发,python,接口自动化测试)