11

我不断地使用 nodejs 运行一些服务器脚本(在不同的端口上)。

其中一些服务器上存在大量流量。我用于跟踪连接异常的console.log命令会导致我一直不需要的臃肿的日志文件 - 仅用于调试。我一直在深夜手动停止脚本,截断文件并重新启动它们。这不会长期有效,所以我们决定找到一个解决方案。

我系统上的其他人在我不知情的情况下删除了我为每台服务器设置的日志文件。在命令行上调用forever list表明服务器脚本仍在运行,但现在我无法跟踪日志文件以查看节点的运行情况。

节点停机时间应该保持在最低限度,所以我不愿意在白天停止服务器超过几分钟。来自客户端的初始测试似乎表明脚本运行良好,但我不能 100% 确定没有错误,因为尝试记录到不存在的文件失败

其实我有几个问题:

  1. 可以一直这样一直跑吗?
  2. 如果没有,是否有适当的方法来禁用日志记录?github存储库似乎表明永远仍将记录到我不想要的默认文件。否则我可能只写一个定时停止脚本,截断日志,然后重新启动脚本的 cronjob。
  3. 如果我只是在脚本仍在运行时使用touch logfile_name.log之类的东西再次创建日志文件会发生什么 - 这会永远吓坏还是这是一个合理的解决方案?

谢谢你的时间。

4

3 回答 3

4

根据https://github.com/foreverjs/forever,尝试通过 -s 来静默所有日志。

forever -s start YOURSCRIPT

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

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

sudo npm update -g.

于 2015-04-12T13:56:02.820 回答
2

1) 只需建立一个定期功能或管理选项来清除永久日志。从手册forever cleanlogs

2)至少对于Linux。将每个日志文件发送到/dev/null. 每个日志类型由选项-l -o和指定-r。,-a选项append log将停止抱怨日志已经存在。

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

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

于 2017-06-09T22:53:16.477 回答
1

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

特别是copytruncate选项,它在您的情况下非常有用。

于 2013-06-13T08:57:11.117 回答