@davstack/logs-服务器
局部哨兵形状的app - > sqlite 遥测槽(logs) 财务报告和审定财务报表 追踪.
为什么
- E2E可追溯性. 前端+后端+工人 POST 到相同的
.davstack/logs/default.db· ;trace_id跟踪各种服务的要求。 日志、跟踪跨度和错误事件位于一个表格中,受到歧视kind栏('log' | 'span' | 'event') (中文(简体) ). - 下正显. 将自动设备和低功耗设置纳入现有的哨兵记录器客户端。 设定
tracesSampleRate并跨入与原木相同的水槽——没有额外的接线. - 为特工优化. 默认情况下压缩一行一行——编码代理读取时没有分组通行证.
安装设置(1分) (S)
- 建议:脚手架 达夫斯达克 init
pnpx @davstack/init
(cd) 您的项目 repo 优先 - 日志服务器范围为代码库)
- 在 Dev 中设置本地水槽, 将您现有的 Sentry DSN 指向守护进程 :
Sentry.init({dsn: IS_DEV ? "http://[email protected]:5181/1" : import.meta.env.VITE_SENTRY_DSN })
(在使用前请参看完整的设置指南 : 设置( m)(中文(简体) )
用法示例
- 启动服务器
davstack start
(更多信息: 达夫斯塔克图伊(中文(简体) )
- 在app中添加日志,或者使用自定义.
logger.debug("user clicked save", { user_id: 42, run_id: "r-99" })
(更多信息: 撰写-logs.md(中文(简体) )
- 用 -- db( 可选的) 运行重播, 将本会话的日志覆盖到自己的 DB
vitest-server run --db=reorder-bug src/reorder.test.ts # → .davstack/logs/reorder-bug.db (default: default.db)
注释 :
- 建议Davstack跑道员(虚拟服务器),但经常
pnpm dev仍然抓取日志 --db建议使用,但如果不使用,则在default.db。 。 。 .
(更多信息: 发报机 -- -- 微波(中文(简体) )
- 查询日志
sqlite3。 。 。 .
sqlite3 -header -column .davstack/logs/default.db "
SELECT ts, msg, attrs->>'user_id' AS user_id
FROM logs
WHERE data->>'body' LIKE '%clicked save%'
ORDER BY ts;
"
结果 :
ts msg user_id
---------- ----------------- -------
1716480923 user clicked save 42
- 查询追踪跨度 -
kind='span'排有真实的duration_ms因此,最慢的跨度排序为平面 SQL.op编号 :status编号 :parent_span_id被平整为attrs。 。 。 .
sqlite3 -header -column .davstack/logs/default.db "
SELECT msg, duration_ms,
attrs->>'op' AS op,
attrs->>'status' AS status
FROM logs
WHERE kind = 'span'
ORDER BY duration_ms DESC
LIMIT 10;
"
(记录和跨度共享 trace_id 列,所以一个 WHERE trace_id = ? 将全部请求时限切开。 )
- 查询出错事件 -
kind='event'行是真正的例外(Sentry.captureException,未处理错误,反应错误边界)。 整个堆栈在data· ;exception_type编号 :mechanism被平整为attrs。 。 。 .
sqlite3 -header -column .davstack/logs/default.db "
SELECT ts, msg,
attrs->>'exception_type' AS type,
attrs->>'function' AS fn,
attrs->>'filename' AS file
FROM logs
WHERE kind = 'event'
ORDER BY ts DESC
LIMIT 10;
"
司马
一个 logs 表格/会话 DB。 密钥列 :
| 栏 | 日志 | 间距( r)kind='span'(中文(简体) ) | 活动(kind='event'(中文(简体) ) |
|---|---|---|---|
kind | 'log' | 'span' | 'event' |
ts | 日志 timestamp | 间距 start_timestamp | 事件 timestamp |
duration_ms | NULL | (timestamp - start_timestamp) * 1000 | NULL |
msg | 日志 body | 间距 description || op (根:tx名称) | "{type}: {value}" (预算外) message |
level | OTel 级别 | '' | 事件 level (错误/致命/警告/信息) |
data | 逐字记录项目 | 逐字记录/ 交易跟踪对象 | 逐字记录活动 exception编号 :stacktrace(中文(简体) ) |
attrs | 平面( 未包装) | 平面跨度数据+ op编号 :status编号 :parent_span_id编号 :description编号 :duration_ms | exception_type编号 :mechanism编号 :handled + 顶端 in_app 边框 |
交易事件会扩展为每行一行: root( 从 contexts.trace+每架1辆 spans[] 孩子们 错误/消息事件( E)Sentry.captureException, (中文(简体) ), captureMessage,未处理错误,反应错误边界)成为一个 kind='event' 排行——完整堆栈在 data,以及 trace_id 将其与同一请求的日志/相干.
文档
- 文件/设置 – 配置文件, env vars, 运行时间选择
- 文件/书面-日志.md ——每台SDK发射机设置
- 文件/阅读-日志.md - 平地计程车
attrs和已准备好的食谱 - 文档/收发器 -- -- md ——通过
davstack-logs.db属性 - 文件/会议视图.md ——每个 DB SQL 视图,多 DB 路由的高值后续