2022年 11月 6日

Python之日志处理

什么是日志?

日志是一种可以追踪某些软件运行时所发生事件的方法。通过log的分析,可以方便用户了解系统或软件、应用的运行情况。
我们通过记录和分析日志可以了解一个系统或软件程序运行情况是否正常,也可以在应用程序出现故障时快速定位问题。
在自动化测试中,我们也可以使用日志模块进行记录以及问题的快速查找。

python如何实现日志的收集?

logging模块的基本应用

组建名称 对应类名 功能描述
日志器 Logger 提供了应用程序可一直使用的接口
处理器 Handler 将logger创建的日志记录发送到合适的目的输出
过滤器 Filter 提供了更细粒度的控制工具来决定输出哪条日志记录,丢弃那些日志记录
格式器 Formatter 决定日志记录的最终输出格式

步骤

1、创建日志对象

import logging
#创建日志对象
logger = logging.getLogger()

2、创建处理器
  1. 控制台处理器将日志输出到控制台
  2. 方法:logging.StreamHandler() #创建日志到控制台
    logging.FileHandler() #创建日志到指定路径
  3. 日志对象默认的级别为:WARNING
  4. 出现两个等级时,遵循以高等级的日志输出规则

⚠️日志器添加处理器

3、格式器

格式器作用:
决定日志生成的最终输出格式

  1. 创建格式器
  2. 处理器添加格式器
  3. 日志器添加处理器

⚠️处理器添加格式器

代码如下:

"""
    @Time : 2022/4/25 12:48 下午
    @Auth :  xxx
    @Funct :日志处理
"""
import logging
import os

import yaml

path = os.path.split(os.path.realpath(__file__))[0]
# print(path)
projectname = 'learning'

# 处理:是不是主入口运行
if path.endswith(projectname):
    pass
else:
    idx = path.find(projectname)
    path = path[:idx + len(projectname)]
    print(path)
# 读取yaml配置文件内容
with open(file=path + '/lib/conf.yaml', mode='r', encoding='utf-8') as file:
    # 获取配置文件中的logger信息
    logging_yaml = yaml.safe_load(file).get('logger')
    # 修改配置中的写入log文件路径
    logging_yaml['filename'] = path + logging_yaml.get('filename')
    # 定义处理器,文本输出方式
    file_handler = logging.FileHandler(filename=logging_yaml['filename'], encoding='utf-8')
    
#通过创建一个带有默认 Formatter 的StreamHandler 并将其添加到根日志记录器中来初始化基本配置。如果根日志记录器没有定义处理器,则debug(), info(), warning(), error() and critical() 会自动调用 basicConfig() 

logging.basicConfig(**logging_yaml)

# 创建日志器
logger = logging.getLogger()

# 定义处理器,控制台方式
consle = logging.StreamHandler()

# 设置日志级别
consle.setLevel(logging_yaml['level'])

# 设置日志格式
consle.setFormatter(logging.Formatter(logging_yaml['format']))

# 日志添加处理器
logger.addHandler(consle)
logger.addHandler(file_handler)

if __name__ == '__main__':
    logger.debug("DEBUG")
    logger.info("INFO")
    logger.warning("WARNING")
    logger.error("ERROR")

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56