跟踪: 为 `+server` 路由处理器发出一个 Span
作者: janekprange创建于 2026年9月13日更新于 2026年9月13日
- 说明问题
有了跟踪.server',SvelteKit在record span'中将andle'/resolve'、`load'、组成动作和远程功能包裹起来。 当其中一人投掷“错误”或“HttpError”时,处理器的跨度为“记录例外”和“PanstatusCode.ERROR”。
服务器.js ' 处理器(GET ' 、POST ' 、UERY ' 、回落'等)没有包起来。 提交-endpoint'解决mod[方法]'-mod.fallback'(+Head to GET),并给处理者打电话,而无需`record span'。
因此,“服务器”请求产生sveltekit.handle.root'、可选的sveltekit.handle.sequed.*和sveltekit.resolve',但处理者本身没有间隔:
sveltekit.handle.root (英语).
QQ sveltekit.handle. sequenced.* (只有使用序列( ))
sveltekit.resolve (英语).
=============== =========================================================================================================================================================================如果操作者投出,解决'中的try/catch ' 称为handle fatal error (.)',并返回答复,而不是重新投放,因此包装者从未看到例外。 sveltekit.resolve'只记录该答复中的`http.response.status code'(例如500)。 SvelteKit 已经标出此标记 :
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你来干什么? //答复.js-决心()捕获量 HtpError从端点可以到这里 - TODO应该在那里处理吗? 返回等待手柄 fatal error(活动,状态,e);
少了两件事:
1. 端点处理器的跨度。
2. " 记录例外 " 和操作人员在某一期间投掷时的 " 错误 " 状态。
" 装入 " 、 " 形成行动 " 、 " sveltekit.remote.call " 和 " sveltekit.remote.form. " 都有一个操作员的间隔。 终点是遗留下来的一等HTTP入站点,投出故障后没有“错误”和“记录例外”。 基于 Trace 调试错过了它, 错误偏差的采样也错过了 。
`event.tracting.current'确实存在于`服务器 ' 处理器内,但`resolve ' 运行为`commer tracting(event, solution span)',因此`current'点在断点间,而不是处理器间. " RequestEvent.tracting.current. " 的文件将其描述为 " 手 " 、 " 装入 " 或形式动作的跨度(可观察性文件还提及远程)。 也没有提及“服务员”。
JSDoc的可观察性文件和`跟踪.server ' 都处理、装入、形成动作和遥控器,但不包括`XQserver'。 `packages/kit/test/apps/basics/test/vitest/server.spec.js ' 中的追踪试验仅封面页`load'。
* 说明拟议解决办法
在“ record span” 中将已解析的 QQserver 处理器包起来, 与OpenTeleometry Express 仪器记录每个路由处理器的跨度一样。
在“交接点”中,只将已解决的处理器(`mod[方法]--mod.fallback',包括Head to GET)包起来。 将 " 退让 " 和 " 退让 " 的路径留给 " 退让 " ,将 " 退让 " 转向 " 退让 " 。 使用与“负载”和行动相同的步骤:
`record span',然后`commer tracting',然后`与 request store({事件:追踪,状态},.)'
那样,`活动.追踪.当前'和
. . . . . . .内容来源: sveltejs/kit