python logging中的logger和handler

简短定义:
Handler(日志处理程序)是 Python logging 框架中负责把日志记录(LogRecord)“送到目的地”的对象,目的地可以是文件、终端、邮件、网络等。Logger 负责生成日志记录;Handler 负责接收这些记录并写出或发送它们。 :white_check_mark:

要点

  • 职责分离:Logger 产生消息,Handler 负责发送/存储消息。
  • 常见类型FileHandler, StreamHandler, RotatingFileHandler, SMTPHandler 等。
  • 可配置:每个 Handler 有自己的 level(过滤级别)和 formatter(格式化日志文本)。
  • 多个 Handler:可以给一个 Logger 添加多个 Handler,使同一条日志同时输出到多个目的地,但要小心重复输出或资源泄漏(未关闭的文件句柄)。

示例

import logging

logger = logging.getLogger("multi_ocr_sdk")
fh = logging.FileHandler("/path/to/logfile.log")
fh.setLevel(logging.INFO)
fh.setFormatter(logging.Formatter("%(asctime)s %(levelname)s %(message)s"))
logger.addHandler(fh)

logger.info("这是条日志")

小提示:如果需要替换日志文件,记得先 close()removeHandler() 旧的 file handler,以避免文件描述符泄漏并确保日志写入最新的文件。 :sparkles: