使用Node.js的Forever将控制台日志输出到屏幕上

21

我刚刚发现我的nodejs应用程序一直崩溃,所以我使用了forever app.js来启动应用程序,并在其崩溃时自动重新启动。

问题: 现在,我的应用程序通过console.logutil.log输出了许多有用的信息。 我以前使用screen运行节点应用程序,但现在我正在使用forever运行nodejs应用程序,我无法看到所有的输出。

有没有办法实时查看nodejs应用程序的所有输出?


只需在tail中打开日志文件,但如果您需要实时查看输出,则建议不要使用forever(即您正在调试)。 - jli
1
我会输出一些信息,以便随时监视作业数量和连接的客户端数量,这对于我来说非常有用,可以监控负载并确定是否应该添加更多客户端或者是否一半的客户端池已经崩溃。我想,为了实现我的目标,我应该有一个“主客户端”连接到这个Node.js服务器来接收调试信息?还是有其他方法? - Nyxynyx
我会在开发阶段一直使用 forever,这样我就可以学习如何使用它,并发现在上线时可能遇到的任何问题。我认为在开发阶段使用 forever 并不是什么“坏事”。 - AJB
6个回答

37

使用永久命令直接操作:

forever logs app.js -f

它实时显示您的应用程序输出和永久日志(显示检测到的更改和重启消息)。


它可以工作,只需启动您的进程:forever start app.js,然后forever logs app.js -f。 - JLavoie
肯定这是正确的答案。这是使用Forever输出日志文件的正确方法。 - hcontreras

35
你可以使用这个Shell命令来实时查看日志文件。
 tail -f /path/to/logfile

不确定这是否是您所需的内容。


听起来这可能是我需要的,我需要回到我的系统尝试一下tail。从快速的谷歌搜索来看,tail只显示文件中最后X行,但它是否实时更新呢? - Nyxynyx
2
-f 标志将会满足我的需求。谢谢! - Nyxynyx
1
有没有其他方法将console.log输出直接显示在屏幕上?我正在使用IBM Bluemix Cloud,在那里我无法ssh进入服务器并查看tail。但是,如果它们可以显示在屏幕上,我可以看到“console.log”。 - skjindal93
@skjindal93 想知道同样的问题,但是由于没有人回复,我猜不是。 - Denny

15

最简单的方法是

运行:

forever logs // will give you list of log files
forever logs 0 -f // then just provide the index of log

3

如果你在 Forever 命令后添加 --help 参数,将会看到以下示例:

forever -o out.log -e err.log my-script.js

-o-e 定义了标准输出和错误输出日志文件。

-o  OUTFILE      Logs stdout from child script to OUTFILE
-e  ERRFILE      Logs stderr from child script to ERRFILE

永远似乎有点过头了,对于开发来说。试试 Supervisor,看看它是否更好用:

npm install -g supervisor
supervisor app.js

1
我正在AWS EC2实例上运行nodejs,这对我有用。 注意:如果您是root所有者,则可以访问日志。因此,首先使用sudo su
forever -a -o out.log -e err.log yourServerApp.js

它将跟踪控制台日志(如果您从日志中跟踪事件消息)和错误日志。希望能对某些人有所帮助。

1
linux : tail -f /path/to/logfile.log
windows : enter PowerShell -> Get-Content /path/to/logfile.log -Wait -Tail 1000

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接