Skip to main content

Module log_writer

Module log_writer 

Source
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 一次)。