当前位置: 首页 > news >正文

接口自动化-logging日志

目录

1.介绍 

2.使用 

默认对象:

自定义logger对象:

定义日志输出格式


1.介绍 

logging 是 Python 标准库中的⼀个模块,它提供了灵活的日志记录功能。通过 logging ,开发者可以方便地将日志信息输出到控制台、文件、网络等多种目标,同时支持不同级别的日志记录,以满足不同场景下的需求。

2.使用 

默认对象:

 创建my_logging.py文件测试输入以下代码

import  logging#默认情况下loggging输出warning以上的日志logging.debug("This is a debug message")
logging.info("This is an info message")
logging.warning("This is a warning message")
logging.error("This is an error message")
logging.critical("This is a critical message")

默认情况下loggging输出waning以上的日志

 logging.basicConfig可以自定义输出级别(这里设置为info)

import  logging#默认情况下loggging输出debug以上的日志
#logging.basicConfig可以自定义输出级别(这里设置为info)
logging.basicConfig(level=logging.INFO)logging.debug("This is a debug message")
logging.info("This is an info message")
logging.warning("This is a warning message")
logging.error("This is an error message")
logging.critical("This is a critical message")

自定义logger对象:

获取日志记录器logging.getLogger(__name__)  获取⼀个日志记录器对象, name  是当
前模块的名称。使用模块名称作为日志记录器的名称有助于在大型项目中区分不同模块的日志.

设置日志级别logger.setLevel(logging.DEBUG) 将日志记录器的级别设置为 DEBUG,这意味着所有 DEBUG 及以上级别的日志都会被记录。

日志级别金字塔:DEBUG < INFO < WARNING < ERROR < CRITICAL 高于设定级别的日志才会被处理 

创建文件处理器logging.FileHandler(filename="test.log") 创建一个文件处理器,将日志信息写入到名为 test.log 的文件中。 

添加处理器logger.addHandler(handler) 将文件处理器添加到日志记录器中,这样日志记录器就会使用这个处理器来处理日志信息。 

import  logginglogging.basicConfig(level=logging.INFO)
#自定义logger对象logger = logging.getLogger("my_logger")logger.debug("This is a debug message")
logger.info("This is an info message")
logger.warning("This is a warning message")
logger.error("This is an error message")
logger.critical("This is a critical message")

 值得注意点是 :没有设置级别时默认继承 basicConfig 的级别(这里为INFO)

 

设置 logger.setLevel() 自定义级别后: 

import  logging#默认情况下loggging输出warning以上的日志
#logging.S可以自定义输出级别(这里设置为info)
logging.basicConfig(level=logging.INFO)
#
#
# logging.debug("This is a debug message")
# logging.info("This is an info message")
# logging.warning("This is a warning message")
# logging.error("This is an error message")
# logging.critical("This is a critical message")logger = logging.getLogger("my_logger")
#给logger对象配置自定义级别
logger.setLevel(level=logging.DEBUG)logger.debug("This is a debug message")
logger.info("This is an info message")
logger.warning("This is a warning message")
logger.error("This is an error message")
logger.critical("This is a critical message")

假如我们要将日志输出到其他文件中,我们可以创建一个文件处理器(FileHandler)--将日志输入到指定文件中(没有文件会自动创建)

 运行前

运行后

 

定义日志输出格式

 my_logger 文件中默认只有打印的语句,没有信息、级别等信息,我们需要设置一个日志格式器添加在处理器上达到我们需要的效果。(这意味着处理器在处理日志信息时,会使用这个格式器来格式化日志信息)

logging.Formatter  是用于定义日志输出格式的类。在构造函数中,传递了⼀个格式字符串,用于指定日志信息的格式。格式字符串中使用了⼀些特殊的占位符(以 % 开头),这些占位符会被替换为相应的日志信息内容

格式占位符说明
%(asctime)s日志记录的时间戳,通常显示为日期和时间。
%(levelname)s日志级别(如DEBUG、INFO、WARNING、ERROR、CRITICAL)。
%(name)s日志记录器的名称,通常为模块名称。
%(filename)s日志记录发生的文件名。
%(funcName)s日志记录发生的函数名。
%(lineno)d日志记录发生的行号。
%(message)s日志消息本身。

import  logging#默认情况下loggging输出warning以上的日志
#logging.S可以自定义输出级别(这里设置为info)
logging.basicConfig(level=logging.INFO)logger = logging.getLogger("my_logger")
#给logger对象配置自定义级别
logger.setLevel(level=logging.DEBUG)#创建文件处理器--将日志输出到指定文件(可以自动创建)
handler = logging.FileHandler('my_logger.log')# 创建⼀个⽇志格式器对象
formatter = logging.Formatter(
"%(asctime)s %(levelname)s [%(name)s] [%(filename)s (%(funcName)s:%(lineno)d)] - %(message)s"
)#将格式器添加到处理器中
handler.setFormatter(formatter)#将处理器添加到日志文件中
logger.addHandler(handler)logger.debug("This is a debug message")
logger.info("This is an info message")
logger.warning("This is a warning message")
logger.error("This is an error message")
logger.critical("This is a critical message")

 

 

思维导图

http://www.dtcms.com/a/300637.html

相关文章:

  • Qt 窗口 工具栏QToolBar、状态栏StatusBar
  • 24点数学游戏(穷举法求解表达式)
  • 基于Matlab自适应阈值分割算法的图像处理研究
  • esp32s3创建rust工程 window成功mac
  • [硬件电路-97]:模拟器件 - 如何通过外部的闭环负反馈,让运算放大器从“暴脾气”、“愣头青”、情绪容易失控者变成“沉着”、“冷静”的精密调控者的?
  • MySQL表的增删改查(基础)
  • 基于鲸鱼算法的三相逆变器分数阶滑模控制参数优化
  • solidity从入门到精通 第六章:安全第一
  • 设备独立性软件-高速缓存与缓冲区
  • 广东省省考备考(第五十八天7.27)——资料分析、数量、判断推理(强化训练)
  • 通过不同坐标系下的两个向量,求解旋转矩阵
  • springboot基于Java的人力资源管理系统设计与实现
  • LabelImg:简洁高效的图像标注工具和下载
  • ROS2入门到精通教程(三)快速体验
  • Unity 实时 CPU 使用率监控
  • 机械学习----knn实战案例----手写数字图像识别
  • 携带参数的表单文件上传 axios, SpringBoot
  • Karonte: Detecting Insecure Multi-binary Interactions in Embedded Firmware论文分享
  • LabelMe数据标注软件介绍和下载
  • UNet 改进(38):融合多尺度输入与可变形卷积、门控特征融合的医学图像Unet分割网络
  • Django实时通信实战:WebSocket与ASGI全解析(下)
  • Flutter开发实战之测试驱动开发
  • 金融科技中的跨境支付、Open API、数字产品服务开发、变革管理
  • KNN算法实战:手写数字识别详解
  • 【自动化运维神器Ansible】Ansible常用模块之archive模块详解
  • 2024-2025华为ICT大赛中国区 实践赛网络赛道(高教组)全国总决赛 理论部分真题+解析
  • 零基础,如何入手学习SAP?
  • CentOS网卡未被托管解决记录
  • PiscCode实现从图像到字符艺术
  • Word和WPS文字如何制作分栏试卷?想分几栏分几栏