Expand description
tracing 捕获日志的攒批落库 writer(capture mpsc → logs 表)。 日志批量落库后台任务(server-only)。
从 crate::api::logs::capture 的 mpsc 通道接收捕获的日志事件,
攒批(200 条或 500ms 窗口,先到先发)后用一条 INSERT ... UNNEST
批量写入 logs 表。
失败语义:
- INSERT 失败:记 error 日志(target 在 capture 的防递归排除名单内, 不会回流进管道)、整批丢弃、按批大小累加 dropped 计数—— 日志查看器允许丢数据,绝不允许反过来拖垮主服务;
get_conn()失败:保留本批,sleep 后重试(不丢批也不重试风暴), 重试期间通道继续缓冲,缓冲溢出走 capture 的 dropped 计数。
Constants§
- BATCH_
SIZE 🔒 - 单批最大条数。
- CONN_
RETRY_ 🔒INTERVAL get_conn()失败后的重试间隔(保留本批,不丢)。- FLUSH_
WINDOW 🔒 - 攒批窗口:首条到达后最长等待这么久就冲刷(不足一批也发)。
Functions§
- flush 🔒
- 冲刷一批:UNNEST 数组批量 INSERT。空批直接返回。
- run_
writer - 启动日志落库循环(serve() 内 spawn 一次)。