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. 消息格式示例

富文本格式特性:

  • 支持飞书原生富文本格式(post 类型)
  • 第一行关键信息加粗显示
  • 更好的可读性和视觉效果
  • 兼容飞书移动端和桌面端

简化格式 (级别低于 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): 日志级别,默认 "INFO"
  • 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. 消息格式: 使用飞书富文本格式(post),更好的显示效果
  3. 消息限制: 单条消息不超过 30KB
  4. 频率限制: 建议设置合适的缓存时间,避免频繁发送
  5. 异常处理: 发送失败会打印错误信息,但不影响主程序
  6. 兼容性: 富文本格式兼容飞书移动端和桌面端

更新日志

v2.0.0

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

v1.1.0

  • 升级为飞书富文本格式(post 类型)
  • 支持第一行加粗显示关键信息
  • 优化消息结构和可读性
  • 更好的飞书客户端兼容性

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.3.tar.gz (13.4 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.3-py3-none-any.whl (11.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: loguru_feishu_handler-2.0.3.tar.gz
  • Upload date:
  • Size: 13.4 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.3.tar.gz
Algorithm Hash digest
SHA256 ce357e652fa63152b0f1e80c35a52ddfa71838548e14ad19bb3e5c4fe23d2ce5
MD5 df1db454cd627a23716f2d41a9d6c4b8
BLAKE2b-256 8a2dd3d3a6e5485d9efbb9699aa30b7dcb639f1667be4a90b0317198a1acdc29

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for loguru_feishu_handler-2.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 f15a13335ce311a029b0df5fb8afc8997efc0253b7f3ab3d72e73c685277a185
MD5 d9109fb2f2f5ee521494754a33f89229
BLAKE2b-256 fa7693444cb7319e0a50c1b0e33afe5567ec18486af8e03993aeff8a63531527

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