Skip to content

feat(logging): LuaLS 日志写入宿主会话日志目录 - #6

Merged
xiaoyumuxi merged 1 commit into
mainfrom
codex/plugin-logging-v2
Nov 4, 2026
Merged

xiaoyumuxi merged 1 commit into
mainfrom
codex/plugin-logging-v2

Conversation

@xiaoyumuxi

@xiaoyumuxi xiaoyumuxi commented Nov 4, 2026 •

Copy link
Copy Markdown
Contributor

概要

Lua 插件接入结构化日志 v2:插件升到插件 API 2,通过启动模板 ${logDir} 把宿主分配的会话日志目录传给 LuaLS,LuaLS 只保留 warn/error 并写入该目录,不再在用户缓存目录下自建 log/。语言服务生命周期、window/logMessage 和有界 stderr 仍由宿主统一写入 lsp/lua 通道。本插件没有后端,也不使用 SDK。

依赖:

清单(plugin.json)

  • pluginAPIVersion 从 1 改为 2。
  • 语言服务器启动参数从 [] 改为 ["${logDir}"]。

启动器(bin/lithe-lua-language-server)

  • 第一个参数必须是宿主提供的日志目录:
    • 缺失时以 “Lithe must supply the current session log directory” 退出。
    • 不是绝对路径时以退出码 64 拒绝。
    • 校验后 shift,其余参数照旧传给 LuaLS。
  • 只创建 $state_dir/meta,不再创建 $state_dir/log。
  • LuaLS 参数改为 --logpath="$log_dir" --loglevel=warn;--metapath 仍指向用户缓存目录。

README

  • 日志去向:LuaLS 的警告和错误写入当前会话的 plugins/io.github.lithe-idea.lua-support/files/;生成的标准库定义仍在 ~/Library/Caches/io.github.lithe-idea.lua-support/meta/(设置 XDG_CACHE_HOME 时用其对应目录),两者生命周期独立。
  • 安装要求改为支持插件 API 2、结构化日志 v2 和本地 logDirectory 的最新 macOS Lithe preview。
  • 新增“诊断日志”一节:
    • --logpath、--loglevel、--metapath 是 LuaLS 3.19.1 的公开 CLI 参数;默认只保留 warn/error,避免 trace/debug 的协议和文档内容写进文件。
    • LuaLS 原生文件只用于单独排障,不等同于宿主脱敏后的 v2 事件。
    • 启动器不删除旧版本留在缓存目录里的日志。
    • 旧宿主或远程进程缺少 logDirectory 时,按已有启动契约明确拒绝 ${logDir},不回退到安装目录。
    • 只发布 macOS;Windows 仍是 v1,不声明支持 Windows v2。
  • 目录说明和“改造成其他插件”步骤同步更新。

验证

  • 本地:
    • sh -n 检查启动器语法通过。
    • 传相对路径时退出码 64,不传参数时报上面的提示并退出。
    • node scripts/package.mjs 通过,生成 arm64、x64 两个包。
  • 此前在 Codex 工作区(计划记录):固定 SHA 的 LuaLS 3.19.1 两架构打包;真实 arm64 启动;1214 个安装文件哈希在运行后不变,进程正常回收。
  • 本地没有跑 Lithe Store 规则校验,交给 CI。

预期的 CI 状态与合并顺序

  • CI 只打包并做 Store 规则校验,不检出宿主,预期通过。
  • 发布要等包含 #1676 的 Lithe 稳定版:不含 #1676 的宿主不提供 ${logDir},LuaLS 无法启动。
  • 与宿主 #1699 无合并先后要求。
  • 本 PR 没有改插件版本号(仍为 0.3.0)。

限制

  • 只覆盖 macOS 宿主;Windows 仍是 v1 writer。
  • 未在 Lithe 整机日志窗口里做端到端验收。

配套 PR:

- plugin.json 升到 pluginAPIVersion 2,启动参数传入 ${logDir}
- 启动器把 --logpath 指向宿主提供的会话目录,并固定 --loglevel=warn;
  不再创建缓存下的 log/ 目录,meta 仍在用户缓存目录
- 非绝对路径的日志目录直接以退出码 64 拒绝
- README 补充诊断日志说明和宿主版本要求
@xiaoyumuxi
xiaoyumuxi marked this pull request as ready for review November 4, 2026 10:57
@xiaoyumuxi
xiaoyumuxi merged commit f2a52a6 into main Nov 4, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant