foreverjs不会将子进程的console.log写入日志文件

时间:2017-02-02 12:36:56

标签: javascript npm forever

我运行了一个nodejs服务器,每x秒使用setInterval函数轮询一次数据。该应用程序的这一点看起来像这样:

startPolling () {
    debug('Snmp poller started');

    timers.setInterval(
        this.poll(),
        config.get('Snmp.interval')
);
}

poll () {
    return () => {
        if (dbConnection.get()) {
            debug('Polling data');
            this.fetchSiteNodes(this.site);
        }
    };
}

接下来在我的pacakge.json文件中,我使用这个冗长的命令运行服务器:

  

NODE_PATH = $ NODE_PATH:./ NODE_ENV =开发   永远-p logs -a -l forever.log -o logs / output.log -e   logs / error.log -d start ./bin/www

我会在这里分解:

  • -p logs - 我想要所有日志的logs目录的路径
  • -a - 在forever.log文件
  • 末尾添加日志
  • -l forever.log - 要写入
  • 的日志文件的名称
  • -o logs / output.log - stdout所在文件的名称(如果我没有弄错?)
  • -e logs / error.log - 来自子进程的所有错误的文件名
  • -d - 调试模式? (更冗长的调试?)
  • 开始 - 永远开始

现在从上面的代码片段和forever命令我希望logs/output.log文件包含脚本中的所有console.logs(...)输出,所以它将包含这样的内容:

Snmp poller started
polling data +10
// after 10 secons 
polling data +10

不幸的是,这不是正在发生的事情,基本上所有日志文件都保持为空。

如何让子进程将console.logs写入永久进程的output.log文件?

谢谢!

1 个答案:

答案 0 :(得分:0)

回答我自己的问题。

我错过了我使用debug library的事实,并且我没有在npm命令中包含调试级别,在添加DEBUG=server,app,database后它开始按预期工作。最后我还可以添加DEBUG=*,但输出结果是压倒性的,包含所有mongodb查询等。