Complete Python Logging Guide
Python logging 基础指南 实际项目中,print() 只能满足基本的输出要求,而 logging 模块提供了更灵活、分级别、可配置的日志系统。 核心概念 Logger 记录器 记录器是拿来写日志的东西 logger = logging.getLogger(__name__) logger.info("开始执行任务") 接收日志消息,按级别判断是否要输出,并交给 Handler Handler 处理器 决定日志“去哪里”,有下面常见 Handler StreamHandler: 输出到控制台 FileHandler: 写入文件 RotatingFileHandler: 自动滚动文件 SMTHandler: 发邮件 SocketHandler: 发送到日志服务器 一个 Logger 可以挂多个 Handler Formatter 格式器 负责日志的格式 '%(asctime)s - %(levelname)s - %(name)s - %(message)s' 所有 Handler 都可以设置自己的 Formatter,不同输出渠道可以呈现不同格式 LogRecord 日志记录对象 每次调用 logging.info("hello") 内部都会生成一个 LogRecord 对象 LogRecord 是日志系统的“消息载体”,包括全部的元数据,例如: 时间戳 模块名 文件名、行号 日志级别 写入消息 message 线程 ID、进程 ID Filter 过滤器 Filter 是更细粒度的筛选工具,可以控制某个模块的日志,阻止某些关键字,基于上下文附加标签等。 简单使用 import logging logging.basicConfig( # 输出 INFO 及以上几倍日志 level=logging.INFO, # 时间 - 模块名 - 级别 - 消息内容 format='%(asctime)s - %(name)s - %(levelname)s - %(message)s' ) logging.info("程序已启动") logging.warning("磁盘空间将不足") logging.error("读取文件失败") 使用 Logger 对象:在较大的项目中,不会使用基础配置,而是为每个模块创建自己的 logger ...