vscode中pm2扩展需先确保本地pm2已安装pm2-logrotate插件并激活,否则logrotate命令不可用;windows不支持该插件,仅能使用--max-size/--max-files参数实现基础轮转。

VSCode里装PM2扩展前,先确认本地PM2是否支持logrotate
直接在终端执行 pm2 logrotate,如果报错 Command logrotate not found,说明你用的是精简版 PM2(比如通过 npm install pm2 -g 安装但没加 --production 以外的参数),它默认不带 logrotate 子命令。这不是 VSCode 的问题,而是 PM2 本身缺失插件。
必须手动安装官方日志轮转插件:pm2 install pm2-logrotate。安装后运行 pm2 list,能看到 pm2-logrotate 出现在插件列表里,状态为 active 才算成功。
- 如果提示权限错误(如 Linux/macOS 下写入
/etc/logrotate.d/失败),改用sudo pm2 install pm2-logrotate - Windows 用户注意:
pm2-logrotate在 Windows 上不可用,只能靠 PM2 自身的max_size+max_files参数做基础轮转 - 插件安装后不会自动生效,需重启所有已启动的应用:
pm2 restart all
在VSCode中配置PM2扩展连接本地或远程PM2实例
orchidfiles/pm2-vscode 扩展本身不运行 PM2,它只是个“遥控器”,需要你提前在目标机器上跑着 PM2 进程。VSCode 侧边栏的 PM2 面板显示的是它连接到的那个 PM2 实例的状态——不是你当前打开的项目,而是那个 PM2 实例管理的所有应用。
连接方式分两类:
-
本地连接:扩展默认走本地 Unix socket(Linux/macOS)或 named pipe(Windows),只要你在本机用
pm2 start起过服务,扩展就能自动发现并列出进程 -
SSH 远程连接:在 VSCode 设置里搜
pm2.ssh,填入host、username、privateKeyPath(推荐用密钥)、pm2Path(远程服务器上pm2命令的绝对路径,比如/usr/local/bin/pm2)。别漏掉pm2Path——很多连接失败是因为远程 PM2 不在$PATH里
连上之后,右键进程选 View Logs,看到的日志流就是 pm2 logs <app></app> 的实时输出,底层读的仍是 ~/.pm2/logs/<app>-out.log</app> 文件。轮转是否生效,取决于你之前是否正确配置了 pm2-logrotate 或 PM2 启动参数。
用PM2启动参数控制单应用日志轮转(不依赖logrotate插件)
如果你不想装插件,或者只管单个应用、不追求系统级归档压缩,PM2 内置的 --max-size 和 --max-files 就够用。它们在 pm2 start 时生效,和 VSCode 无关,但会影响你在扩展里看到的日志内容是否被截断或覆盖。
例如启动时指定:
pm2 start app.js --name my-api --max-size 10M --max-files 7
含义是:单个日志文件超过 10MB 就切新文件,最多保留最近 7 个日志文件(含当前正在写的那个)。旧文件会被重命名为 my-api-out.log.1、my-api-out.log.2… 数字越大越老。
-
--max-size单位必须带后缀(10M、100K、1G),不能写10485760 -
--max-files设为0表示无限保留,等于没开轮转 - 这些参数只对新启动的应用生效;已有应用需先
pm2 delete再start,restart不会重新加载这些参数
VSCode里看日志时,为什么看不到轮转后的历史文件?
VSCode 的 PM2 扩展默认只展示当前正在写入的 -out.log 和 -error.log 文件内容,也就是 pm2 logs 命令的行为。它不会自动列出或合并 .1、.2 等历史轮转文件。
想查旧日志,有三个现实路径:
- 在 VSCode 里打开终端,手动执行
pm2 logs my-app --lines 500查最近 500 行(仍只读当前文件) - 用 VSCode 的“文件资源管理器”直接导航到
~/.pm2/logs/目录,手动打开my-app-out.log.1等文件(注意:这些文件可能已被gzip压缩,VSCode 默认打不开 .gz) - 远程连接时,如果启用了
pm2-logrotate并配置了compress: true,就得先在服务器上gunzip my-app-out.log.1.gz,再传回本地看
真正容易被忽略的一点是:轮转策略是否生效,和你在 VSCode 里点几次“View Logs”完全无关。它只取决于 PM2 进程本身的配置和运行时行为。VSCode 扩展只是个观察窗,不是控制台。











