使 pm2 登录到控制台

问题描述 投票:0回答:7

我正在使用 pm2 运行节点网络服务器。由于 pm2 生成另一个进程并将 stdout 和 stderr 重定向到文件,因此我必须在其他地方查找日志。理想情况下,我希望将节点进程输出到我运行 pm2 的同一控制台窗口。否则,我会选择 pm2 使用活动控制台窗口运行节点进程,并将节点进程的 stdout 和 stderr 写入该控制台窗口。如何才能实现这一目标?我在 Windows 机器上。

node.js pm2
7个回答
124
投票

我相信您还可以看到由命令 pm2 logspm2 logs [app-name] 守护进程运行的进程的

stdout
stderr


30
投票

您可以通过启动另一个终端/控制台并运行此命令来轻松实现这一点

 pm2 log

将除 console.log 之外的所有内容记录到终端

 pm2 logs

将所有内容记录到终端和 console.log

注意第二个命令中的“s”


15
投票

找到答案(他们的文档不是那么好),只需添加

--no-daemon
标志,似乎已经完成了。尽管如此,它似乎仍在第一次正常运行时记录到文件(即使使用该标志)。一旦进程重新启动(我正在监视文件更改),它就会开始注销到控制台


7
投票

以编程方式,您可以执行以下操作:

const pm2 = require('pm2')

pm2.connect(function(err) {
  if (err) {
    console.error(err);
    process.exit(2);
  }
  pm2.start([
    {
      script             : "server.js",
      output: "/dev/stdout",
      error: "/dev/stderr",
    },
  ]
    , function(err, proc) {
      if(err) {
        throw err
      }
    });
})

2
投票

直接进入您要监控日志的正在运行的应用程序

pm2 logs <app id or app name> --lines 50

2
投票

我认为

--attach
标志可能是这里最好的选择。

来自文档

要启动应用程序并检查日志流,请使用 --attach 选项:

$ pm2 start api.js --attach
通过 Ctrl-C 退出时,应用程序仍将在后台运行。


0
投票

我想在基于 nginx 的 docker 容器的后台运行 pm2。在

/docker-entrypoint.d/
中添加了一个 shell 脚本,它只运行
./node_modules/.bin/pm2-runtime start ./ecosystem.config.cjs &
。 & 使 pm2 在后台运行,但所有标准输出不受影响 - 它全部与正常的 nginx 标准输出混合在一起。

© www.soinside.com 2019 - 2024. All rights reserved.