控制台日志和错误是否在 pm2 中被垃圾收集?
Do console logs and errors get garbage collected in pm2?
据我了解,日志不会在 node.js 中被垃圾收集,因此进行大量日志记录的应用程序可能会导致内存耗尽。
但是 pm2 的日志记录工具是否改变了这一点?
即,如果我 运行 pm2 下的 node.js 脚本喷出大量 console.log(消息),那么 pm2 'intercept' 它们是否会释放它,大概是从内存中释放它并写入它到一个文件,或者它只是观察 stdout & stderr 并将新行复制到它们各自的 out/error .pm2/logs 文件中?
是的,您说得对,pm2 只是将 stdout 和 stderr 捕获到日志文件中。
但它也有一些选项来控制日志。
您可以像这样通过 ecosystem.config.json 禁用写入公共日志:
{
"out_file": "/dev/null",
"error_file": "/dev/null"
}
但不推荐。
PM2 还提供了一个工具来通过此模块旋转日志 pm2-logrotate.
您可以将系统 logrotate 与配置文件结合使用的另一种方法如下:
/path/to/.pm2/logs/*.log {
rotate 10
weekly
missingok
notifempty
compress
delaycompress
copytruncate
create 0640 group user
}
更多信息,我们查看官方文档:pm2-log-management
据我了解,日志不会在 node.js 中被垃圾收集,因此进行大量日志记录的应用程序可能会导致内存耗尽。
但是 pm2 的日志记录工具是否改变了这一点? 即,如果我 运行 pm2 下的 node.js 脚本喷出大量 console.log(消息),那么 pm2 'intercept' 它们是否会释放它,大概是从内存中释放它并写入它到一个文件,或者它只是观察 stdout & stderr 并将新行复制到它们各自的 out/error .pm2/logs 文件中?
是的,您说得对,pm2 只是将 stdout 和 stderr 捕获到日志文件中。 但它也有一些选项来控制日志。 您可以像这样通过 ecosystem.config.json 禁用写入公共日志:
{
"out_file": "/dev/null",
"error_file": "/dev/null"
}
但不推荐。 PM2 还提供了一个工具来通过此模块旋转日志 pm2-logrotate.
您可以将系统 logrotate 与配置文件结合使用的另一种方法如下:
/path/to/.pm2/logs/*.log {
rotate 10
weekly
missingok
notifempty
compress
delaycompress
copytruncate
create 0640 group user
}
更多信息,我们查看官方文档:pm2-log-management