Skip to main content

日志管理平台 Python SDK — FastAPI/Starlette/Flask 中间件,自动采集 HTTP 日志

Project description

日志管理平台 Python SDK

English Documentation | PyPI

logs-sdk 是日志管理平台的 Python SDK,提供 FastAPI/Starlette 和 Flask 中间件,一行代码即可自动采集 HTTP 请求的完整日志,异步批量上报。

功能特性

  • 一行代码接入app.add_middleware(logger.fastapi_middleware)
  • 完整采集:60+ 字段——请求/响应头体、客户端信息、设备信息、TLS 版本
  • 自动识别:客户端类型(Web / 小程序 / App / 服务端)、请求来源
  • 异常捕获:HTTP 5xx + Python 异常堆栈自动采集
  • UUID v7:32 位十六进制无连字符
  • 敏感脱敏:Authorization / Cookie 自动脱敏
  • 异步非阻塞:环形缓冲区 + 后台定时刷新
  • 离线缓存:断网本地存储,恢复自动重传
  • 优雅关闭close() 确保缓冲日志全部上报

安装

pip install logs-sdk

# 或安装 FastAPI 集成
pip install logs-sdk[fastapi]

要求 Python 3.9+。

快速开始

FastAPI / Starlette

from fastapi import FastAPI
from logs_sdk import LogSDK

app = FastAPI()

logger = LogSDK(
    endpoint="https://api.logs.codexs.cn/api/v1/ingest/logs",
    api_key="clog_pk_xxx",
    api_secret="clog_sk_xxx",
    project_slug="my-project",
    environment="production",
)

# 一行代码接入
app.add_middleware(logger.fastapi_middleware)

@app.get("/api/hello")
def hello():
    return {"message": "hello"}

Flask

from flask import Flask
from logs_sdk import LogSDK

app = Flask(__name__)

logger = LogSDK(
    endpoint="https://api.logs.codexs.cn/api/v1/ingest/logs",
    api_key="clog_pk_xxx",
    api_secret="clog_sk_xxx",
    project_slug="my-project",
)

# Flask 中间件
app.wsgi_app = logger.flask_middleware

配置参数

参数 类型 默认值 说明
endpoint str 必填 日志上报地址
api_key str 必填 SDK 认证密钥(公钥)
api_secret str 必填 SDK 认证密钥(私钥)
project_slug str 必填 项目短标识
environment str "production" 运行环境
service_name str "" 微服务名称
buffer_size int 1000 缓冲区容量
flush_interval int 5 刷新间隔(秒)
max_retries int 3 最大重试次数
max_body_size int 4096 请求/响应体最大采集大小

采集字段一览

与 Go/Node.js/Java SDK 完全对齐,详见 LogEntry 类型定义

架构设计

HTTP 请求进入
  │
  ├─ ① FastAPIMiddleware.dispatch()
  │     ├─ 生成 UUID v7
  │     ├─ 读取请求体
  │     └─ 记录开始时间
  │
  ├─ ② await call_next(request)  # 业务处理
  │
  ├─ ③ 构建 LogEntry(60+ 字段)
  │
  ├─ ④ buffer.push(entry)  # 非阻塞
  │
  └─ ⑤ 后台定时刷新 → POST → 重试 → 离线缓存

离线缓存

断网时自动缓存到 $TMPDIR/logs-sdk-offline/,恢复后自动重传。

版本历史

版本 日期 变更
v0.3.0 2026-06-21 初始版本:FastAPI/Flask 中间件、异步缓冲、重试、离线缓存

License

UNLICENSED — 内部使用

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

logs_sdk-0.3.2.tar.gz (8.8 kB view details)

Uploaded Source

Built Distribution

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

logs_sdk-0.3.2-py3-none-any.whl (10.5 kB view details)

Uploaded Python 3

File details

Details for the file logs_sdk-0.3.2.tar.gz.

File metadata

  • Download URL: logs_sdk-0.3.2.tar.gz
  • Upload date:
  • Size: 8.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for logs_sdk-0.3.2.tar.gz
Algorithm Hash digest
SHA256 0a5003db39fa2cd681927dd8c10c258e5e507121c6e5d4ada2778826003319be
MD5 84a0808c6ddcd0add17927b527f9061b
BLAKE2b-256 fa9739f0192a55c57f34d6b714ddd724f2135fc07ca4f97033d0b9603ec929b5

See more details on using hashes here.

File details

Details for the file logs_sdk-0.3.2-py3-none-any.whl.

File metadata

  • Download URL: logs_sdk-0.3.2-py3-none-any.whl
  • Upload date:
  • Size: 10.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for logs_sdk-0.3.2-py3-none-any.whl
Algorithm Hash digest
SHA256 67c091208be274613e3d24e5a6f91132332a9c916cbcdb30aef12d1cdd5e35fd
MD5 2e5a2b041ba937d3e062312622fa40f8
BLAKE2b-256 5947d6a4350b42cf0465d7fec8971bba1670818bb848e9286fe17f12a19efc68

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