禁用永久运行的node.js脚本中的日志logging

我一直在使用nodejs持续运行几个服务器脚本(在不同的端口上)。

在这些服务器上有相当多的stream量。 我用于跟踪连接exception的console.log命令会导致臃肿的日志文件,我不需要所有的时间 – 仅用于debugging。 我一直在深夜手动停止脚本,截断文件,并重新启动它们。 这不会长期,所以我们决定find一个解决scheme。

我的系统上的其他人删除了我不知道的每个服务器设置的日志文件。 在命令行上永远调用列表显示服务器脚本仍在运行,但是现在我无法查看日志文件以查看节点是如何执行的。

节点停机时间应该保持在最低限度,所以我很犹豫在白天停止服务器的时间超过几分钟。 从客户端的初始testing似乎表明,脚本做的很好,但我不能100%确定没有错误,因为login到一个不存在的文件尝试失败

其实我有几个问题:

  1. 永久保持这样的状态可以吗?
  2. 如果没有,是否有正确的方法来禁用日志logging? github资源库似乎表明,永远仍然会login到一个默认文件,我不想要。 否则,我可能只写一个定期停止脚本的cronjob,截断日志,然后重新启动脚本。
  3. 如果我只是在脚本仍在运行的情况下触摸logfile_name.log ,再次创build日志文件,会发生什么情况 – 这是否会永远令人惊讶或者这是一个合理的解决scheme?

谢谢你的时间。

       

网上收集的解决方案 "禁用永久运行的node.js脚本中的日志logging"

根据https://github.com/foreverjs/forever ,尝试将-s传递给所有日志。

forever -s start YOURSCRIPT

当然,在这样做之前,尝试永远更新到最新:

sudo curl -L https://npmjs.com/install.sh | sudo sh

sudo npm update -g

有一个漂亮的工具,可以帮助你所谓的logrotate。 看看这里

尤其是copytruncate选项,对你的情况非常有用。

1)只是build立一个周期性的function或pipe理选项来清除永久日志。 从手册forever cleanlogs

2)至less用于Linux。 将每个日志文件发送到/dev/null 。 每个日志types由选项-l -o-r指定。 append log-a选项将停止它抱怨已经存在的日志。

 forever start -a -l /dev/null -o /dev/null -r /dev/null your-server.js 

也许使用你自己的日志logging系统,我使用log4js ,如果我在节点进程仍在运行的时候删除日志文件,那么就不会抱怨。