为什么不永远记录错误消息

Why aren't forever's error messages being logged

我目前 运行 永远在 bash 脚本中:

forever -v  -l log/system.log -e log/systemerr.log -w --watchIgnore '{log,data,node_modules}' app.js

我也在使用 log4js 为我的应用程序捕获日志记录(使用以下配置):

log4js.configure({
  appenders: [
    //{ type: 'console' },
    {
      type: "file", 
      absolute: true, 
      filename: "./log/app.log", 
      maxLogSize: 1000000,
      backups: 10
    }
  ]}); 

从我的应用程序输出到 app.log 并且 forever 的 -l 输出到 system.log:

的意义上来说,一切似乎都在工作
warn:    --minUptime not set. Defaulting to: 1000ms
warn:    --spinSleepTime not set. Your script will exit if it does not stay up for at least 1000ms

但以下内容转到控制台,我原以为它会转到 systemerr.log:

error: Could not read .foreverignore file.
error: ENOENT, open '/home/blah/blah/.foreverignore'
error: Forever detected script exited with code: 1
error: Script restart attempt #1

这个我认为是forever产生的错误信息,如何获取到systemerr.log?

永远 -e ERRFILE 需要的选项:

Logs stderr from child script to ERRFILE

forever 本身产生的错误不会记录在此处,这很好,因为您只会在此处收到应用程序产生的错误。

如果你真的想得到文件中的 forever 错误,请在包装 bash 脚本中使用 IO redirection for STDERR,如下所示:

forever ... 2>> forever-errors.log

如果出于某种原因您仍然希望在与应用程序错误日志相同的文件中获取这些错误,您可以重定向并将 STDERR 附加到与错误日志相同的文件。