formatter.nvim日志写入位置咨询:无法定位日志存储路径
formatter.nvim 日志存储位置说明
核心结论
formatter.nvim 本身不会将日志写入文件,它的日志输出完全依赖 Neovim 的 vim.notify 机制——默认情况下只会在 Neovim 的临时消息区域显示,不会持久化存储到本地文件中。
你找不到日志的原因
:LspLog不适用:该命令仅用于查看 LSP 服务的日志,formatter.nvim 不属于 LSP 类插件,因此这里不会有相关内容。:messages为空的常见诱因:- 日志级别不匹配:若你设置的日志级别高于插件实际输出的级别(比如设为
INFO,但插件仅输出TRACE级别的日志),则不会产生可捕获的消息。 - 静默格式化被触发:代码中的
not M.is_current_format_silent()判断会屏蔽静默模式下的日志输出,若你执行格式化时启用了静默参数,日志会被直接忽略。 - 消息被覆盖:
vim.notify的默认临时消息可能被后续操作快速冲掉,来不及留存到:messages的历史记录中。
- 日志级别不匹配:若你设置的日志级别高于插件实际输出的级别(比如设为
查看或持久化日志的方法
- 实时捕获临时消息:确保日志级别设置正确(比如设为
TRACE),执行格式化操作后立刻运行:messages查看,或检查 Neovim 的消息弹窗(若使用了nvim-notify这类通知插件)。 - 自定义日志持久化:如果需要将日志写入文件,可以通过重写
vim.notify实现,示例配置如下:-- 重写 vim.notify,将 formatter.nvim 日志写入文件 local original_notify = vim.notify vim.notify = function(msg, level, opts) -- 仅处理 formatter.nvim 的日志(匹配其默认通知标题) if opts and opts.title == "Formatter" then local log_path = vim.fn.stdpath("log") .. "/formatter.log" local timestamp = os.date("%Y-%m-%d %H:%M:%S") local level_label = vim.log.levels[level] local log_content = string.format("[%s] [%s] %s\n", timestamp, level_label, msg) -- 追加写入日志文件 vim.fn.writefile({log_content}, log_path, "a") end -- 保留原有的通知行为 original_notify(msg, level, opts) end
内容的提问来源于stack exchange,提问作者Lordbalmon
相关产品推荐
相关产品推荐

