永久存储 console.log 输出的位置在哪里?

118

我安装并使用了forever,发现它很有趣。

但是我发现日志被放在了其他地方。有没有什么提示?


如果你只是想直接在终端中记录console.log结果,可以使用 forever logs app.js -f 这个方法非常好用。 - Deluar Hossen
11个回答

150

Forever接受命令行选项来控制输出:

-l  LOGFILE      Logs the forever output to LOGFILE
-o  OUTFILE      Logs stdout from child script to OUTFILE
-e  ERRFILE      Logs stderr from child script to ERRFILE

例如:

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

点击此处了解更多信息。


7
如果我没有指定任何参数,只是使用类似于“forever myapp”的命令,那么默认路径是什么?谢谢! - AGamePlayer
3
我看不到有文档记录 - 我认为它随时间变化了。我在~/.forever文件夹中看到旧的日志。但是我最近更新过,至少在我的 Mac 上,如果我没有指定日志文件名,它会将 console.log 写入终端。 - bryanmac
1
如果文件已经存在,-a选项也是必需的。forever -a -o out.log -e err.log my-script.js - swateek
2
LOGFILE和OUTFILE有什么区别?对我来说,它们似乎包含完全相同的信息! - Dominic
3
LOGFILE 包括所有输出,包括 forever 进程的输出,而 OUTFILE 仅包括您的子脚本的标准输出。 - Joseph238
显示剩余3条评论

88

默认情况下,Forever 会将日志放入 ~/.forever/ 文件夹中的一个随机文件中。

您应该运行 forever list 命令以查看正在运行的进程及其对应的日志文件。

示例输出

>>> forever list
info:    Forever processes running
data:        uid  command       script forever pid  logfile                         uptime
data:    [0] 6n71 /usr/bin/node app.js 2233    2239 /home/vagrant/.forever/6n71.log 0:0:0:1.590

然而,最好还是像bryanmac提到的那样使用-l进行指定。


1
并不总是一个随机文件。如果您在启动时使用--uid标志指定了一个uid,它将使用指定的uid创建一个日志文件。 - ddelrio1986

23

13

尝试使用该命令

> forever logs
或者
> sudo forever logs

您将获得日志文件的位置。


8

这是一个老问题,但我遇到了相同的问题。如果你想要看到实时输出,可以运行

forever logs

这将显示日志文件的路径以及脚本的编号。然后,您可以使用

forever logs 0 -f

0 应该替换成您想查看输出的脚本编号。


5
这是我的解决方法:
forever -a -o out.log -e err.log app.js

-a 是什么作用? - Brandon Ros
@BrandonRos -a, --append 追加日志;您可以在此处查看其余选项(https://www.npmjs.com/package/forever)。 - HellBaby

5

需要执行以下命令来启动: forever start script.js 要检查控制台/错误日志,请使用 forever logs 这将打印 forever 存储的所有日志列表, 然后您可以使用 tail -f /path/to/logs/file.log 来实时打印日志到您的窗口。按下ctrl+z停止日志打印。


2

默认情况下,forever将所有需要的文件放置在/$HOME/.forever中。如果您想更改该位置,请在运行forever时设置FOREVER_ROOT环境变量:

FOREVER_ROOT=/etc/forever forever start index.js

1

帮助是你最好的救星,有一个logs操作可以调用,以检查所有正在运行的进程的日志。

forever --help

显示命令
logs                Lists log files for all forever processes
logs <script|index> Tails the logs for <script|index>

上述命令的示例输出,针对三个正在运行的进程。console.log 输出存储在这些日志中。
info:    Logs for running Forever processes
data:        script    logfile
data:    [0] server.js /root/.forever/79ao.log
data:    [1] server.js /root/.forever/ZcOk.log
data:    [2] server.js /root/.forever/L30K.log

1

基于bryanmac的回答。我只是把所有日志保存在一个文件中,然后使用tail命令读取它。这是一种简单但有效的方法。

forever -o common.log -e common.log index.js && tail -f common.log


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