我有一个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=开发forever-p logs-a-l forever.log-o logs/output.log-elogs/error.log-d启动/bin/www-
我将在这里进行分解:
- -p日志-我希望所有日志所在的
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
文件?
谢谢!
回答我自己的问题。
我错过了使用调试库的事实,也没有在npm命令中包含调试级别,在添加DEBUG=server,app,database
后,它开始按预期工作。最终,我也可以添加DEBUG=*
,但随后的输出是压倒性的,包含所有mongodb查询等。