豫言 / 豫言操作系统日志适配 @ 0.1.0

以 Worker 的 console.error、console.warn、console.info 实现日志接口。

源码浏览已生成;不能解析的文件以纯文本展示,不表示通过类型检查。

说明.汉语.md

# 日志云工适配

把三个函数映射到 Worker 的 `console.error`、`console.warn`、`console.info`。适配先在豫言里按 UTF-8 字节数核对上限,未超过 8192 字节的文字原样交给云工宿主的控制台原语;超过时先减去标记 `…(已截断)` 的字节数得到余量,再在字节串里向前退到 UTF-8 字符边界(不会切断一个码点),把整段字节交给宿主,用 `Uint8Array.slice` 取前缀并用 `TextDecoder` 还原成字符串(成本与输入大小几乎无关);超过 16000000 字节的巨型文字超出宿主桥单次交换上限,改为在豫言里逐字节拼接前缀,每次约 10 ms,仍与输入大小无关,也不会把整串拆成字符列表而耗尽内存。日志文字不经 JSON,控制字符和换行原样到达平台;宿主桥把字符串传给宿主原语时会丢弃开头的 U+FEFF(宿主桥缺口,见一致性测试的待办项)。适配不保存日志,不脱敏,也不区分请求;敏感信息不得写入日志是应用的责任。

真实本地 workerd 实测:三个级别在 workerd 日志里分别显示为 `[ERROR]`、`[WARNING]` 与普通日志行;超长文字被截断并以 `…(已截断)` 结尾,单条不超过 8192 字节。综合场景见 `../消息队列/一致性验证/真实工作者/`。

`一致性验证/` 里有试验应用、真实 Wasm 的 Node 测试和复跑说明。

说明.文言.md

# 日志云工适配

以三术映 Worker 之 `console.error`、`console.warn`、`console.info`。适配先于豫言按 UTF-8 字节核其限,未逾八千一百九十二字节者,原样授云工宿主之控制台原语;逾则先减标 `…(已截断)` 之字节以得余量,复于字节串中向前退至 UTF-8 之字界(不裂一码点),以整段字节授宿主,用 `Uint8Array.slice` 取其前缀,以 `TextDecoder` 还为字符串(其费与入文之大小几无关);逾一千六百万字节之巨文,超宿主桥单次之交换,则改于豫言逐字节拼前缀,每次约十毫秒,仍与入文之大小无关,且不拆整串为字符之列而竭内存。日志之文不经 JSON,控制之字与换行原样达平台;宿主桥授字符串于宿主原语之时,去其首之 U+FEFF(宿主桥之缺,详一致性测试之待办)。适配不存日志,不脱敏,亦不分请求;敏感之讯不得书入日志,乃客之责。

真本地 workerd 实测:三级于 workerd 日志中,分显为 `[ERROR]`、`[WARNING]` 与常行;逾长之文被截而以 `…(已截断)` 终,单条不逾八千一百九十二字节。综合之场见 `../消息队列/一致性验证/真实工作者/`。

`一致性验证/` 有试应用、真 Wasm 之 Node 测试及复行之说明。