Node.js Forever不会创建日志文件

时间:2014-07-10 23:37:15

标签: javascript node.js forever

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

3 个答案:

答案 0 :(得分:4)

如果使用forever your_script.js启动节点进程并且未指定日志文件,forever会将日志写入终端(或Windows上的cmd)。运行forever listforever 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查看。