层流病房建设单位网站,wordpress 无法自行修改密码,大型企业网站建设,介绍网络营销Python 的 logging 模块是一个灵活且强大的日志记录工具#xff0c;广泛应用于应用程序的调试、运行监控和问题排查。它提供了丰富的功能#xff0c;包括多级日志记录、多种输出方式、灵活的格式配置等。以下是详细介绍#xff1a; 一、为什么使用 logging 模块#xff1f;…
Python 的 logging 模块是一个灵活且强大的日志记录工具广泛应用于应用程序的调试、运行监控和问题排查。它提供了丰富的功能包括多级日志记录、多种输出方式、灵活的格式配置等。以下是详细介绍 一、为什么使用 logging 模块
替代 printprint 语句仅适合简单调试而 logging 支持持久化、级别控制、异步写入等。分级日志根据重要性区分日志如 DEBUG、INFO、ERROR便于过滤信息。灵活输出可同时输出到控制台、文件、网络等。线程安全适用于多线程/多进程环境。 二、核心组件 Logger记录器 应用程序直接调用的接口负责产生日志。 通过 logging.getLogger(name) 获取或创建 Logger 实例。支持层级结构如 parent.child 继承父级配置。 Handler处理器 决定日志的输出位置如控制台、文件、邮件等。 常用 Handler StreamHandler输出到流如控制台。FileHandler输出到文件。RotatingFileHandler按大小滚动日志文件。TimedRotatingFileHandler按时间滚动日志文件。SMTPHandler发送邮件。 Filter过滤器 提供更细粒度的日志过滤如仅记录特定关键词的日志。 Formatter格式器 定义日志的输出格式时间、级别、消息等。 常用格式字段%(asctime)s - %(name)s - %(levelname)s - %(message)s三、日志级别
从低到高共 6 个级别低于设定级别的日志将被忽略
级别数值说明DEBUG10详细调试信息INFO20程序正常运行信息WARNING30潜在问题但程序仍运行ERROR40严重错误影响部分功能CRITICAL50致命错误可能导致程序终止 四、基本使用步骤 创建 Logger import logginglogger logging.getLogger(__name__) # 推荐使用模块名作为Logger名称
logger.setLevel(logging.DEBUG) # 设置记录的最低级别配置 Handler 和 Formatter # 创建控制台 Handler
console_handler logging.StreamHandler()
console_handler.setLevel(logging.WARNING) # 控制台只输出 WARNING 及以上级别# 创建文件 Handler
file_handler logging.FileHandler(app.log)
file_handler.setLevel(logging.DEBUG) # 文件记录所有 DEBUG 及以上级别# 定义 Formatter
formatter logging.Formatter(%(asctime)s - %(name)s - %(levelname)s - %(message)s)
console_handler.setFormatter(formatter)
file_handler.setFormatter(formatter)# 将 Handler 添加到 Logger
logger.addHandler(console_handler)
logger.addHandler(file_handler)记录日志 logger.debug(Debug 信息)
logger.info(程序启动)
logger.warning(磁盘空间不足)
logger.error(请求超时)五、快速配置basicConfig
适用于简单场景的快速配置
import logginglogging.basicConfig(levellogging.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 / 0
except Exception:logger.exception(发生异常:)日志传播 子 Logger 默认将日志传递给父 Logger。可通过 logger.propagate False 关闭。 七、常见问题 重复日志 原因多次添加 Handler 或 basicConfig 被多次调用。 解决确保 Handler 只添加一次或在 basicConfig 中设置 forceTrue。 性能优化 避免在高频代码中记录低级别日志如 DEBUG可预先检查级别 if logger.isEnabledFor(logging.DEBUG):logger.debug(f耗时操作: {time_consuming()})八、总结
logging 模块通过灵活的配置和分级机制满足了从简单到复杂的日志需求。掌握其核心组件Logger、Handler、Formatter和级别控制能显著提升程序的可维护性。建议在项目中替代 print合理利用日志进行调试和监控。