目录
- 一、为什么使用 logging 模块?
- 二、核心组件
- 三、日志级别
- 四、基本使用步骤
- 五、快速配置(basicConfig)
- 六、高质量用法
- 七、常见难题
- 八、拓展资料
Python 的 logging
模块一个灵活且强大的日志记录工具,广泛应用于应用程序的调试、运行监控和难题排查。它提供了丰富的功能,包括多级日志记录、多种输出方式、灵活的格式配置等。下面内容是详细介绍:
一、为什么使用 logging 模块?
- 替代
print
:print
语句仅适合简单调试,而logging
支持持久化、级别控制、异步写入等。 - 分级日志:根据重要性区分日志(如 DEBUG、INFO、ERROR),便于过滤信息。
- 灵活输出:可同时输出到控制台、文件、网络等。
- 线程安全:适用于多线程/多进程环境。
二、核心组件
Logger(记录器)
应用程序直接调用的接口,负责产生日志。
- 通过
logging.getLogger(name)
获取或创建 Logger 实例。 - 支持层级结构(如
&039;parent.child&039;
继承父级配置)。
Handler(处理器)
决定日志的输出位置(如控制台、文件、邮件等)。
- 常用 Handler:
- StreamHandler:输出到流(如控制台)。
- FileHandler:输出到文件。
- RotatingFileHandler:按大致滚动日志文件。
- TimedRotatingFileHandler:按时刻滚动日志文件。
- SMTPHandler:发送邮件。
Filter(过滤器)
提供更细粒度的日志过滤(如仅记录特定关键词的日志)。
Formatter(格式器)
定义日志的输出格式(时刻、级别、消息等)。
常用格式字段:
‘%(asctime)s – %(name)s – %(levelname)s – %(message)s’
三、日志级别
从低到高共 6 个级别(低于设定级别的日志将被忽略):
级别 | 数值 | 说明 |
---|---|---|
DEBUG |
10 | 详细调试信息 |
INFO |
20 | 程序正常运行信息 |
WARNING |
30 | 潜在难题,但程序仍运行 |
ERROR |
40 | 严重错误,影响部分功能 |
CRITICAL |
50 | 致命错误,可能导致程序终止 |
四、基本使用步骤
创建 Logger
import logginglogger = logging.getLogger(__name__) 推荐使用模块名作为Logger名称logger.setLevel(logging.DEBUG) 设置记录的最低级别
配置 Handler 和 Formatter
创建控制台 Handlerconsole_handler = logging.StreamHandler()console_handler.setLevel(logging.WARNING) 控制台只输出 WARNING 及以上级别 创建文件 Handlerfile_handler = logging.FileHandler(‘app.log’)file_handler.setLevel(logging.DEBUG) 文件记录所有 DEBUG 及以上级别 定义 Formatterformatter = logging.Formatter(‘%(asctime)s – %(name)s – %(levelname)s – %(message)s’)console_handler.setFormatter(formatter)file_handler.setFormatter(formatter) 将 Handler 添加到 Loggerlogger.addHandler(console_handler)logger.addHandler(file_handler)
记录日志
logger.debug(‘Debug 信息’)logger.info(‘程序启动’)logger.warning(‘磁盘空间不足’)logger.error(‘请求超时’)
五、快速配置(basicConfig)
适用于简单场景的快速配置:
import logginglogging.basicConfig( level=logging.INFO, format=’%(asctime)s – %(levelname)s – %(message)s’, handlers=[ logging.FileHandler(‘app.log’), logging.StreamHandler() ])logging.warning(‘警告信息’)
六、高质量用法
配置文件或字典
使用 logging.config
模块通过文件或字典配置:
import logging.configconfig = ‘version’: 1, ‘formatters’: ‘default’: ‘format’: ‘%(asctime)s – %(levelname)s – %(message)s’} }, ‘handlers’: ‘console’: ‘class’: ‘logging.StreamHandler’, ‘formatter’: ‘default’, ‘level’: ‘DEBUG’ } }, ‘root’: ‘handlers’: [‘console’], ‘level’: ‘INFO’ }}logging.config.dictConfig(config)
捕获异常信息
使用 logger.exception
记录异常堆栈:
try: 1 / 0except Exception: logger.exception(‘发生异常:’)
日志传播
子 Logger 默认将日志传递给父 Logger。可通过 logger.propagate = False
关闭。
七、常见难题
重复日志
缘故:多次添加 Handler 或 basicConfig
被多次调用。
解决:确保 Handler 只添加一次,或在 basicConfig
中设置 force=True
。
性能优化
避免在高频代码中记录低级别日志(如 DEBUG),可预先检查级别:
if logger.isEnabledFor(logging.DEBUG): logger.debug(f’耗时操作: time_consuming()}’)
八、拓展资料
logging
模块通过灵活的配置和分级机制,满足了从简单到复杂的日志需求。掌握其核心组件(Logger、Handler、Formatter)和级别控制,能显著提升程序的可维护性。建议在项目中替代 print
,合理利用日志进行调试和监控。
到此这篇关于Python logging模块使用示例详解的文章就介绍到这了,更多相关Python logging模块使用内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客!
无论兄弟们可能感兴趣的文章:
- python使用logging模块记录日志的操作
- Python中日志模块logging的使用技巧和应用详解
- Python中的Logging模块在项目应用
- python日志模块logging案例详解
- Python使用logging实现多进程安全的日志模块
- Python中的logging模块详解
- Pythonlogging日志模块使用指南
- 一文详解Python中logging模块的用法
- python打印日志技巧的使用教程(logging模块)