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

时间:2015-10-14 18:36:39

标签: node.js stderr forever

我目前正在使用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并且永远的-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

如何将此错误信息(我认为永远生成的信息)发送到systemerr.log?

1 个答案:

答案 0 :(得分:0)

永远 -e ERRFILE期望的选项:

  

将stderr从子脚本记录到ERRFILE

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

如果您真的想在包装bash脚本中使用STDERR文件中使用IO redirection来获取永远错误,请执行以下操作:

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

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