files.exclude 是隐藏日志文件的唯一有效配置项,需设为 "/.log": true 和 "/logs/*": true 等 glob 模式,写入项目级 .vscode/settings.json,无需重启即生效;.gitignore 仅影响 Git,与 VSCode 显示无关。

files.exclude 是隐藏日志文件的唯一有效配置项
想让 .log 文件、logs/ 目录不在资源管理器(左侧文件树)中显示,必须改 files.exclude,不是 search.exclude,也不是 .gitignore。后者只影响 Git 状态和提交行为,对编辑器 UI 完全无效。
常见错误现象:
- 只配了
"search.exclude": {"**/*.log": true},但资源管理器里app.log还在 - 误以为
files.exclude需要重启 VSCode 才生效 —— 实际上保存后立刻刷新,无需重启 - 写成
"logs": true或"logs/",结果不匹配任何路径 —— glob 模式必须带通配符前缀
正确写法(推荐直接写入项目根目录下的 .vscode/settings.json):
{
"files.exclude": {
"**/*.log": true,
"**/logs/**": true,
"**/Logs/**": true,
"**/*.out": true,
"**/*.err": true
}
}
为什么不能只靠 .gitignore?
.gitignore 只控制 Git 是否跟踪文件,不影响 VSCode 资源管理器显示。即使你把 logs/ 加进 .gitignore,只要该目录存在且没被 files.exclude 拦住,它就照常出现在侧边栏。
典型混淆场景:
- 执行过
git add logs/app.log→ 该文件已被 Git 跟踪 → 即使加了.gitignore,它仍会出现在 SCM 面板,且files.exclude不影响其显示逻辑 - 想彻底“眼不见”,得两步走:先用
git rm --cached logs/app.log让 Git 放手,再用files.exclude让 VSCode 隐藏 -
.gitignore对files.exclude无任何继承或联动关系,二者完全独立
工作区设置优先于用户设置,别配错地方
如果你希望某个项目(比如后端服务)隐藏 logs/,而另一个前端项目保留可见,就必须把 files.exclude 写进该项目的 .vscode/settings.json,而不是全局用户设置。
容易踩的坑:
- 在设置界面搜 “exclude” 后,点开的是用户级
search.exclude开关,误以为已生效 - 手动编辑用户
settings.json(位于~/.config/Code/User/settings.json),结果所有项目都套用同一套规则,失去灵活性 - 新建
.vscode/settings.json时只写了{"files.exclude": {...}},没包在完整 JSON 对象里 → VSCode 报错并忽略整个文件
正确结构示例:
{ "files.exclude": { "**/*.log": true } }
隐藏后文件仍可能被其他功能“暴露”
files.exclude 只管资源管理器的视觉呈现,不影响任何底层行为。这意味着:
- Ctrl+P(快速打开)仍能搜到被隐藏的
.log文件,除非你也配了search.exclude - 终端里
ls logs/照常列出内容,VSCode 不干涉 shell 行为 - 某些扩展(如文件图标插件、代码统计工具)可能仍会扫描这些路径,
files.exclude对它们无约束力 - 如果某扩展自己输出日志到
./output.log,且该路径未被files.exclude覆盖,它就会一直躺在那里
真正干净的做法是:同步配 files.exclude 和 search.exclude,且模式一致;对关键扩展(如 Prettier、ESLint),还要单独关掉其内部日志开关,比如设 "prettier.debug": false 或 "eslint.trace.server": "off"。











