logging模块的日志分层架构与配置最佳实践
请详细解释Python logging模块的核心组件(Logger、Handler、Formatter、Filter)以及日志级别,并说明日志分层配置的最佳实践。
回答
Yahuda
logging模块四大核心组件:
- Logger — 日志记录器,应用程序直接调用的接口。按名称分层,如
'app.module' - Handler — 处理器,将日志记录发送到目标(控制台、文件、网络等)。常用:
StreamHandler、FileHandler、RotatingFileHandler、TimedRotatingFileHandler、SMTPHandler - Formatter — 格式器,定义日志输出格式,如
'%(asctime)s - %(name)s - %(levelname)s - %(message)s' - Filter — 过滤器,更细粒度控制哪些日志被处理
日志级别(从低到高):DEBUG < INFO < WARNING < ERROR < CRITICAL,默认只输出WARNING及以上。
最佳实践:
import logging
logging.basicConfig(level=logging.INFO,
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')
logger = logging.getLogger(__name__) # 模块级logger
- 推荐使用
RotatingFileHandler按文件大小轮转日志 - 使用
dictConfig或fileConfig管理复杂配置 - 不同模块使用不同Logger名称方便分层审计
- 不要直接在库代码中调用
logging.basicConfig(),应使用NullHandler