2015-10-14 53 views
2

我目前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?

+0

对于将来的读者:虽然我能够通过使用STDERR重定向获得解决方法,但为什么消息/错误未被捕获为永远的-l选项的一部分,这个问题没有被讨论(或回答)。 – HiDefLoLife

回答

0

永远-e ERRFILE选项需要:

日志从孩子脚本错误输出到ERRFILE由永远本身不会记录在这里生产

错误,这是伟大的你只能在这里得到你的应用程序产生的错误。

如果你真的想在文件中使用IO redirection永远误差为STDERR在你的包裹bash脚本是这样的:

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

如果你仍然想为某些原因让在同这些错误文件作为您的应用程序错误日志,您可能会重定向并将STDERR附加到与错误日志相同的文件。

+0

我用你的答案为我的bash脚本创建了一个catch-all system.log文件。我的bash脚本中的所有错误以及永远运行(我的bash脚本中的最后一条命令)所产生的错误都会被捕获(即2> system.log)谢谢! – HiDefLoLife

相关问题