logging 模块

logging 模块

logging模块支持:分级日志、同时输出控制台 + 文件、自定义日志格式。

Logger(日志器):程序入口,产生日志消息

Handler(处理器):决定日志输出位置(控制台 / 文件)

StreamHandler:输出控制台

FileHandler:输出到本地文件

Formatter(格式器):自定义日志文本格式(时间、级别、信息)

Filter(过滤器):过滤指定日志(拓展了解)

三、日志等级(由低到高)

DEBUG<INFO<WARNING<ERROR<CRITICAL设置等级后,只输出大于等于当前级别的日志。

四、完整实战代码

新建logging_demo.py,代码如下:

import logging # ========== 1. 创建日志器对象 ========== logger = logging.getLogger("demo_logger") # 设置日志器总级别 logger.setLevel(logging.DEBUG) # 防止重复添加处理器 if not logger.handlers: # ========== 2. 定义日志格式 Formatter ========== log_format = logging.Formatter( fmt="%(asctime)s | %(levelname)-8s | %(filename)s:%(lineno)d | %(message)s", datefmt="%Y-%m-%d %H:%M:%S" ) # ========== 3. 创建处理器 Handler ========== # 处理器1:控制台输出 stream_handler = logging.StreamHandler() stream_handler.setLevel(logging.INFO) # 控制台只输出INFO及以上 stream_handler.setFormatter(log_format) # 处理器2:输出到本地日志文件 file_handler = logging.FileHandler("app.log", encoding="utf-8") file_handler.setLevel(logging.DEBUG) # 文件保存全部等级日志 file_handler.setFormatter(log_format) # ==========4. 处理器绑定到日志器 ========== logger.addHandler(stream_handler) logger.addHandler(file_handler) # ========== 测试打印日志 ========== logger.debug("调试信息:变量初始化完成") logger.info("普通信息:程序正常启动") logger.warning("警告信息:磁盘空间不足") logger.error("错误信息:文件读取失败") logger.critical("严重错误:程序即将退出")

五、代码知识点解析

StreamHandler(控制台):只展示 INFO 级别以上日志,方便开发查看

FileHandler(文件):保存全部 DEBUG 级别日志,方便后期排查 bug