Python logging 模块基础与高级配置解析
本文详解Python内置logging模块的使用。涵盖日志定义、五大级别(DEBUG至CRITICAL)及默认WARNING过滤机制。通过基础控制台输出示例与高级配置代码,展示如何自定义日志格式、处理器及文件记录,帮助开发者高效实现程序日志管理。
Python logging模块基础与高级配置解析
一、基础使用
logging使用场景
1.1 logging使用场景
日志功能对于绝大多数程序而言不可或缺。Python标准库提供了logging模块,这是一个高效且现成的日志解决方案。然而,并非所有场景都适用该模块,Python官方文档推荐了特定的使用方式:
日志级别定义与默认行为
| 任务场景 | 最佳工具 |
|---|---|
| 普通情况下,在控制台显示输出 | print() |
| 报告正常程序操作过程中发生的事件 | logging.info()(或者更详细的logging.debug()) |
| 发出有关特定事件的警告 | warnings.warn()或者logging.warning() |
| 报告错误 | 弹出异常 |
| 在不引发异常的情况下报告错误 | logging.error(), logging.exception()或者logging.critical() |
logging模块定义了若干日志级别,按事件严重程度由低到高排列(注意均为大写,因为它们是常量):
| 级别 | 级别数值 | 使用时机 |
|---|---|---|
| DEBUG | 10 | 详细信息,常用于调试。 |
| INFO | 20 | 程序正常运行过程中产生的一些信息。 |
| WARNING | 30 | 警告用户,虽然程序还在正常工作,但有可能发生错误。 |
| ERROR | 40 | 由于更严重的问题,程序已不能执行一些功能了。 |
| CRITICAL | 50 | 严重错误,程序已不能继续运行。 |
默认日志级别设定为WARNING。这意味着只有WARNING级别及以上严重程度的事件才会被记录,低级别信息将被忽略。因此,在默认配置下,DEBUG和INFO级别的日志会被过滤,而WARNING、ERROR和CRITICAL级别的日志会被正常记录。
处理被跟踪的事件有多种方法。最简单的方式是将其直接打印到终端控制台,或者将其写入磁盘文件进行持久化存储。
简单日志输出示例
1.2 简单范例
在未进行任何配置和设定的情况下,logging模块会将日志直接打印到显示器上。具体示例如下:
import logging
logging.warning('Watch out!') # 消息会被打印到控制台上
logging.info('I told you so') # 这行不会被打印,因为级别低于默认级别
若将上述代码保存为脚本并运行,输出结果如下:
WARNING:root:Watch out!
1.3 高级使用
高级日志配置与自定义格式
import logging
#创建logger记录器
logging.basicConfig(filename='example.log',level=logging.DEBUG)
logger = logging.getLogger('simple_example')
logger.setLevel(logging.DEBUG)
#创建一个控制台处理器,并将日志级别设置为debug
ch = logging.StreamHandler()
ch.setLevel(logging.DEBUG)
#创建formatter格式化器
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
#将formatter 添加到ch处理器
ch.setFormatter(formatter)
#将ch添加到logger
logger.addHandler(ch)
#然后就可以开始使用了
# logger.debug('debug message')
#logger.info('info message')
# logger.warning('warn message')
# logger.error('error message')
# logger.critical('critical message')
def Logss():
#要打印的信息
a = "3"
logger.info(a)
Logss()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









