forever
正在处理2个nodejs脚本。系统永远使用v0.11.1和节点v0.10.29
# forever list
info: Forever processes running
data: uid command script forever pid logfile uptime
data: [0] D34J userdown app/main.js 7441 10950 /root/.forever/D34J.log 0:2:31:45.572
data: [1] P0BX userdown app/main.js 11242 11261 /root/.forever/P0BX.log 0:2:20:22.157
# forever logs 0
error: undefined
# forever logs 1
error: undefined
问题:为什么forever
创建的日志文件丢失了?重新启动2个进程仍然不会创建任何日志文件...
目录/root/.forever
也不显示日志文件!
# ls -la /root/.forever
total 20
drwxr-xr-x 4 root root 4096 Jul 4 11:37 .
drwx------ 8 root root 4096 Jul 10 13:24 ..
-rw-r--r-- 1 root root 259 Jul 10 19:34 config.json
drwxr-xr-x 2 root root 4096 Jul 4 11:37 pids
drwxr-xr-x 2 root root 4096 Jul 10 17:12 sock
答案 0 :(得分:4)
如果使用forever your_script.js
启动节点进程并且未指定日志文件,forever
会将日志写入终端(或Windows上的cmd
)。运行forever list
或forever logs
时显示的日志文件并不反映现实,因为它不是在该方案中创建的。但是,如果您指定日志文件,请遵循以下选项:
-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 -l console.log -e error.log your_script.log
一样,它们将被创建。
如果您希望forever
自动为您创建日志文件,则必须使用forever start your_script.js
将脚本作为守护程序启动。在这种情况下,您还可以指定日志文件。
在docs页面中,您可以看到所有命令行选项。
答案 1 :(得分:4)
回答Shreejibawa(因为我还不能评论)......
永远对参数的顺序非常敏感。看一下他们的文档,注意选项必须在脚本之前。
forever [action] [options] SCRIPT [script-options]
而不是:forever start bin/www -e logs/error.log -l logs/logs.log
尝试:forever start -e /path/to/logs/error.log -l /path/to/logs/logs.log your_script.js
答案 2 :(得分:0)
我在OSX中遇到了同样的问题。在OSX(至少)中,命令forever app.js
在前台启动永远的进程,并且不会将日志写入文件,即使提供了-l和-e也是如此。在这种情况下,forever list
会列出文件,即使文件不存在,forever logs i
也会生成error: undefined
。
使用forever start app.js
启动永久 DAEMON 时,会显示日志文件,并可使用forever logs i
查看。