使用 nodejs 的 Forever 将 console.logs 输出到屏幕

Posted

技术标签:

【中文标题】使用 nodejs 的 Forever 将 console.logs 输出到屏幕【英文标题】:Using nodejs's Forever to output console.logs to screen 【发布时间】:2012-05-09 06:49:30 【问题描述】:

我刚刚发现我的 nodejs 应用不断崩溃,所以我使用 forever app.js 启动我的应用,并让它在崩溃时自动重启。

问题:现在我的应用通过console.logutil.log 运行时输出了很多有用的信息。我曾经使用screen 来运行node 应用程序,但现在我一直使用它来运行nodejs 应用程序,我再也看不到所有的输出了。

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

【问题讨论】:

只需在 tail 中打开日志文件,但如果您需要实时查看输出,这表明您不应该永远使用(即您正在调试)。 我输出了一些信息,这样我就可以随时监控作业数量、连接的客户端数量,这对我监控负载和确定是否应该添加更多客户端或是否添加一半的客户端非常有用客户端池已崩溃。我想要做我想做的事,我应该有一个“主客户端”连接到这个 nodejs 服务器来接收调试信息?还是有别的方法 我在开发时一直在运行,因此我可以学习如何使用它并发现上线时会遇到的任何陷阱。我看不出为什么在开发中永远使用它是“不好的”。 【参考方案1】:

直接用forever命令:

forever logs app.js -f

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

【讨论】:

它有效,只需启动您的进程:永远启动 app.js,然后永远记录 app.js -f 这绝对是正确的答案。这才是Forever输出日志文件的正确用法。【参考方案2】:

您可以使用此 shell 命令实时查看日志文件。

 tail -f /path/to/logfile

不确定这是否是您需要的。

【讨论】:

听起来可能是我需要的,我需要回到我的系统尝试tail。从快速的谷歌搜索中,tail 只显示文件中的最后 X 行,但它会实时更新吗? -f 标志会做我需要的。谢谢! 有没有其他方法可以直接将 console.log 输出到屏幕?我正在使用 IBM Bluemix Cloud,无法通过 ssh 进入服务器并查看尾部。但是如果它们可以显示在屏幕上,我可以看到“console.log”。 @skjindal93 想知道同样的问题,但由于没有人回复,我猜没有。【参考方案3】:

最简单的方法是

运行:

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

【讨论】:

【参考方案4】:

如果您将 --help 标志传递给 Forever,您将看到以下示例:

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

Forever 对开发来说似乎有点矫枉过正。试一试Supervisor,看看你是否更喜欢它:

npm install -g supervisor
supervisor app.js

【讨论】:

【参考方案5】:

我在 AWS EC2 实例上运行 nodejs,这对我有用。 注意:如果您是 root 所有者,则可以访问日志。所以首先使用 sudo su 然后

forever -a -o out.log -e err.log yourServerApp.js

它将跟踪控制台日志(以防您从日志中跟踪事件消息)和错误日志。我希望它可以帮助某人。

【讨论】:

【参考方案6】:
linux : tail -f /path/to/logfile.log
windows : enter PowerShell -> Get-Content /path/to/logfile.log -Wait -Tail 1000

【讨论】:

以上是关于使用 nodejs 的 Forever 将 console.logs 输出到屏幕的主要内容,如果未能解决你的问题,请参考以下文章

使用forever让nodejs应用后台执行

NodeJS/Forever 归档日志

forever让nodejs后台运行

清理.forever登录nodejs

forever让nodejs应用后台执行

forever守护nodejs