Skip to main content

Loguru 飞书富文本消息推送 Handler

Project description

Loguru Feishu Handler

基于 loguru 的飞书消息推送处理器,通过飞书机器人 webhook 将日志消息推送到飞书群聊。

特点

  • 🚀 简单易用 - 一行代码即可接入飞书日志推送
  • 🔒 缓存机制 - 支持相同消息缓存,避免重复发送
  • 🎨 富文本格式 - 支持飞书富文本消息格式,显示效果更佳
  • 🔧 字段过滤 - 可配置过滤不需要的日志字段
  • 异步发送 - 多线程发送,不阻塞主程序
  • 🛡️ 异常安全 - 发送失败不影响主程序运行

安装

pip install loguru-feishu-handler

快速开始

1. 创建飞书机器人

  1. 在飞书群聊中,点击群设置
  2. 选择"机器人" -> "添加机器人" -> "自定义机器人"
  3. 设置机器人名称和描述
  4. 复制生成的 Webhook 地址
  5. (可选)设置关键词触发

2. 基础使用

from loguru import logger
from loguru_feishu_handler import add_feishu_sink

# 添加飞书 sink(默认只发送 WARNING 级别以上的日志)
sink_id = add_feishu_sink(
    webhook_url="https://open.feishu.cn/open-apis/bot/v2/hook/xxxxxxxx",
    keyword="系统告警"  # 飞书机器人关键词
)

# 发送日志
logger.warning("这是一条警告日志")
logger.error("这是一条错误日志")
logger.critical("系统发生严重错误!")

# 带异常信息的日志
try:
    1 / 0
except Exception as e:
    logger.exception("发生了除零错误")

3. 高级配置

from loguru import logger
from loguru_feishu_handler import LoguruFeishuSink

# 创建自定义 sink
sink = LoguruFeishuSink(
    webhook_url="https://open.feishu.cn/open-apis/bot/v2/hook/xxxxxxxx",
    keyword="系统监控",
    cache_time=300,  # 5分钟内相同消息不重复发送
    filter_keys=["process", "thread"],  # 过滤掉进程和线程信息
    simple_log_levelno=30,  # WARNING级别以下使用简化格式
    simple_format=True,     # 启用简化格式
    timeout=15             # 请求超时时间
)

# 添加到 logger
sink_id = logger.add(sink, level="INFO")

# 使用示例
logger.info("这是一条信息日志")     # 简化格式
logger.warning("这是一条警告日志")   # 详细格式
logger.error("这是一条错误日志")     # 详细格式

4. 消息格式示例

简化格式 (级别低于 WARNING):

  • 标题: 系统告警 | INFO | 应用启动成功
  • 内容:
    🕐 时间: 2024-01-15 10:30:25
    

详细格式 (级别 WARNING 及以上):

  • 标题: 系统告警 | ERROR | 数据处理失败
  • 内容:
    🕐 时间: 2024-01-15 10:30:25
    📁 文件: /app/main.py:25
    🔧 函数: process_data
    📋 额外信息:
      • user_id: 12345
      • request_id: req_001
    ❌ 异常类型: ValueError
    💬 异常信息: 无效的数据格式
    🔍 堆栈信息:
    ValueError: 无效的数据格式
      File "/app/main.py", line 25, in process_data
        return parse_data(raw_data)
    

无关键词格式:

  • 标题: ERROR | 系统错误
  • 内容:
    🕐 时间: 2024-01-15 10:30:25
    📁 文件: /app/main.py:25
    🔧 函数: error_handler
    

API 参考

add_feishu_sink()

便捷函数,快速添加飞书 sink。

参数:

  • webhook_url (str): 飞书机器人 webhook 地址
  • keyword (str, optional): 机器人触发关键词
  • level (str, optional): 日志级别,默认 "WARNING"
  • cache_time (int, optional): 缓存时间(秒),默认 60
  • filter_keys (List[str], optional): 需要过滤的字段列表
  • simple_log_levelno (int, optional): 简化格式阈值,默认 30 (WARNING)
  • simple_format (bool, optional): 是否启用简化格式,默认 True
  • **kwargs: 传递给 logger.add() 的其他参数

返回:

  • int: sink ID,可用于移除 sink

LoguruFeishuSink

飞书 Sink 类,提供更多自定义选项。

方法:

  • __init__(webhook_url, ...): 初始化 sink
  • __call__(message): 处理日志消息(loguru 自动调用)

注意事项

  1. 网络要求: 需要能够访问飞书 API
  2. 消息限制: 单条消息不超过 30KB
  3. 频率限制: 建议设置合适的缓存时间,避免频繁发送
  4. 异常处理: 发送失败会打印错误信息,但不影响主程序
  5. 富文本格式: 使用飞书富文本格式,支持颜色和结构化显示
  6. 默认级别: 默认只发送 WARNING 及以上级别的日志,避免信息过载

更新日志

v2.0.0

  • 🎨 重大更新: 改用飞书富文本格式,显示效果更佳
  • 📝 标题优化: 完整日志信息作为消息标题显示
  • 🎯 默认级别: 默认日志级别调整为 WARNING,减少噪音
  • 🌈 颜色支持: 不同日志级别使用不同颜色标识
  • 🏗️ 结构优化: 消息内容结构化显示,可读性更强

v1.0.0

  • 初始版本发布
  • 支持基础的日志消息推送
  • 支持缓存机制
  • 支持简化和详细格式
  • 支持字段过滤

许可证

Apache License 2.0

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

loguru_feishu_handler-2.0.0.tar.gz (16.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

loguru_feishu_handler-2.0.0-py3-none-any.whl (11.6 kB view details)

Uploaded Python 3

File details

Details for the file loguru_feishu_handler-2.0.0.tar.gz.

File metadata

  • Download URL: loguru_feishu_handler-2.0.0.tar.gz
  • Upload date:
  • Size: 16.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for loguru_feishu_handler-2.0.0.tar.gz
Algorithm Hash digest
SHA256 fc6260ea14389d269f006ad5ddf3a0f534541ecc74c136506a9bb87ebab61dbd
MD5 e632e6303ff866c1766264d3875dc9f9
BLAKE2b-256 decaddd21c42273888ef04e7424a63c806678a7a8a71c7a09f5bf409e64c9e8f

See more details on using hashes here.

File details

Details for the file loguru_feishu_handler-2.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for loguru_feishu_handler-2.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 55a1851c9dddc9fa6bc29d54b54615b7b7c6dd820675c415b6da74dc4a643808
MD5 177b4806657e421aca6f7c8f06f76f97
BLAKE2b-256 5136d1d1237a0544026c0cdb95243dcc44af94b3f19146532dcd590dabdcf614

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page