news 2026/2/25 18:16:55

8.logging日志模块

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
8.logging日志模块

文章目录

  • 2.接口自动化测试
    • 2.8 logging日志模块
      • 2.8.1 介绍
      • 2.8.2 使用
        • 示例1:全局logging
        • 示例2:自定义logger并输出到控制台
        • 示例3:自定义logger并输出到日志文件
        • 示例4:设置日志格式

2.接口自动化测试

2.8 logging日志模块

2.8.1 介绍

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


2.8.2 使用

示例1:全局logging
# 导入 Python 内置的日志模块importlogging# 配置日志的基本设置# level=logging.INFO 表示设置日志级别为 INFO# 只有 INFO 及以上级别(INFO, WARNING, ERROR, CRITICAL)的日志会被输出# DEBUG 级别的日志不会被输出logging.basicConfig(level=logging.INFO)# 记录 DEBUG 级别的日志(调试信息)# 由于日志级别设置为 INFO,这条日志不会被输出logging.debug('This is a debug message')# 记录 INFO 级别的日志(一般信息)# 会被输出,用于记录程序正常运行的信息logging.info('This is an info message')# 记录 WARNING 级别的日志(警告信息)# 会被输出,用于提示可能的问题,但程序仍能继续运行logging.warning('This is a warning message')# 记录 ERROR 级别的日志(错误信息)# 会被输出,用于记录程序运行中的错误logging.error('This is an error message')# 记录 CRITICAL 级别的日志(严重错误)# 会被输出,用于记录可能导致程序崩溃的严重错误logging.critical('This is a critical message')

运行:

这里的运行要安装图片所示按钮运行:(我之前试了半天不可以但是别人可以还以为自己pycharm版本不对,后来才发现是点错了)


示例2:自定义logger并输出到控制台
# 导入 Python 内置的日志模块importlogging# 配置根日志器的基本设置# level=logging.INFO: 设置 Handler(处理器)的最低输出级别为 INFO# 这是第一道过滤:Handler 只会处理 INFO 及以上级别的消息logging.basicConfig(level=logging.INFO)# 获取一个日志记录器对象# __name__ 会自动获取当前模块的名称(如果是主程序则为 '__main__')logger=logging.getLogger(__name__)# 设置日志记录器(Logger)的级别为 WARNING# 这是第二道过滤:Logger 只会接收 WARNING 及以上级别的消息# 注意:Logger 级别 > Handler 级别时,Logger 级别起决定作用# 因此最终只有 WARNING、ERROR、CRITICAL 三个级别的日志会被输出logger.setLevel(logging.WARNING)if__name__=="__main__":logger.debug('This is a debug message')# DEBUG 级别(最低)- 不会输出(低于 WARNING)logger.info('This is an info message')# INFO 级别 - 不会输出(低于 WARNING)logger.warning('This is a warning message')# WARNING 级别 - 会输出 ✅logger.error('This is an error message')# ERROR 级别 - 会输出 ✅logger.critical('This is a critical message')# CRITICAL 级别(最高)- 会输出 ✅

打印:


示例3:自定义logger并输出到日志文件
# 导入 logging 模块importlogging# 获取一个日志记录器对象,名称为当前模块的名称logger=logging.getLogger(__name__)# 设置日志记录器的级别为 DEBUG# 这意味着所有级别为 DEBUG 及以上的日志都会被记录logger.setLevel(logging.DEBUG)# 创建一个 FileHandler 对象,指定日志文件的名称为 "test.log"# 这个处理器会将日志信息写入到指定的文件中handler=logging.FileHandler(filename="test.log")# 将这个处理器添加到日志记录器中# 这样,日志记录器就会使用这个处理器来处理日志信息logger.addHandler(handler)if__name__=="__main__":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')

运行:自动给我创建了test.log文件,并往里面写入了对应的日志

  • 获取日志记录器: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)将文件处理器添加到日志记录器中,这样日志记录器就会使用这个处理器来处理日志信息.


示例4:设置日志格式
# 导入 logging 模块importlogging# 获取一个日志记录器对象,名称为当前模块的名称logger=logging.getLogger(__name__)# 设置日志记录器的级别为 DEBUG# 这意味着所有级别为 DEBUG 及以上的日志都会被记录logger.setLevel(logging.DEBUG)# 创建一个 FileHandler 对象,指定日志文件的名称为 "test.log"# 这个处理器会将日志信息写入到指定的文件中handler=logging.FileHandler(filename="test.log")# 创建一个日志格式器对象formatter=logging.Formatter("%(asctime)s %(levelname)s [%(name)s] [%(filename)s (%(funcName)s:%(lineno)d)] - %(message)s")# 将格式器设置到处理器上handler.setFormatter(formatter)# 将这个处理器添加到日志记录器中# 这样,日志记录器就会使用这个处理器来处理日志信息logger.addHandler(handler)if__name__=="__main__":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')

打印:

logging.Formatter是用于定义日志输出格式的类。在构造函数中,传递了一个格式字符串,用于指定日志信息的格式。

格式字符串中使用了一些特殊的占位符(以%开头),这些占位符会被替换为相应的日志信息内容

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

handler.setFormatter(formatter)将创建的格式器对象设置到处理器上。这意味着处理器在处理日志信息时,会使用这个格式器来格式化日志信息.

通过这种方式,你可以控制日志信息的输出格式,使其包含你感兴趣的信息,如时间戳、日志级别、文件名、函数名、行号等。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/18 5:52:40

大数据领域数据合规的重要性及实现策略

大数据领域数据合规的重要性及实现策略 关键词:数据合规、隐私保护、GDPR、数据治理、数据安全、合规框架、数据生命周期 摘要:随着大数据技术的快速发展,数据合规已成为企业不可忽视的重要议题。本文深入探讨了大数据领域数据合规的核心概念、法律框架和技术实现策略,分析…

作者头像 李华
网站建设 2026/2/21 23:22:05

Open-AutoGLM数据处理慢?掌握这6个优化策略,性能飙升5倍

第一章&#xff1a;Open-AutoGLM数据处理慢&#xff1f;性能瓶颈的根源剖析在使用 Open-AutoGLM 进行大规模文本生成与自动化推理时&#xff0c;用户普遍反馈数据处理阶段存在显著延迟。该问题并非单一因素导致&#xff0c;而是由多个底层机制共同作用的结果。数据加载机制效率…

作者头像 李华
网站建设 2026/2/24 6:57:39

我发现强化学习+LLM让手术机器人更精准 某医院缝合误差降40%

&#x1f4dd; 博客主页&#xff1a;Jax的CSDN主页 目录家人们谁懂啊&#xff01;AI医生和我抢饭碗了&#xff1f;&#xff08;附真实翻车现场&#xff09; 一、当AI医生开始摸鱼&#xff1a;真实翻车现场 二、AI医生的隐藏技能树&#xff08;带bug代码警告&#xff09; 三、AI…

作者头像 李华
网站建设 2026/2/19 15:03:19

【Open-AutoGLM年报生成全攻略】:掌握AI自动生成年度报告的5大核心技术

第一章&#xff1a;Open-AutoGLM年报生成技术概述Open-AutoGLM 是一种面向企业级文档自动化生成的先进框架&#xff0c;专为高效构建结构化年报而设计。该技术融合了自然语言理解、模板引擎与数据驱动渲染机制&#xff0c;能够在毫秒级时间内完成从原始财务数据到可读性强、格式…

作者头像 李华
网站建设 2026/2/24 13:12:34

还在手动记会议?Open-AutoGLM一键生成可执行任务清单

第一章&#xff1a;还在手动记会议&#xff1f;Open-AutoGLM一键生成可执行任务清单在现代敏捷开发中&#xff0c;会议效率直接影响项目推进速度。传统手动记录会议待办事项不仅耗时&#xff0c;还容易遗漏关键任务。Open-AutoGLM 是一款基于大语言模型的自动化工具&#xff0c…

作者头像 李华
网站建设 2026/2/19 21:22:03

Open-AutoGLM实战指南:5步搭建企业级智能会议记录系统

第一章&#xff1a;Open-AutoGLM 会议记录整理项目背景与目标 Open-AutoGLM 是一个开源的自动化自然语言处理框架&#xff0c;旨在通过集成大语言模型&#xff08;LLM&#xff09;能力&#xff0c;实现会议语音转录、内容摘要生成与任务项提取的端到端流程。项目核心目标是提升…

作者头像 李华