pm2 的日志模块默认是每一个服务进程都分配两个默认的日志文件,普通日志和错误日志。
这两个日志文件存放于/root/.pm2/logs中,如果pm2管理5个服务,那么该文件夹下总共有10个日志文件,并且随着时间不断增加,很容易就会产生很多个上g的日志文件,导致了服务器的磁盘空间不足的问题
清理日志
在 pm2 运行时,如果手动删除日志文件,那么后续的日志不会被写入,需要重启pm2的进程。
使用 pm2 flush 可以清理日志不需要重启。
查看实时日志
pm2 logs # only app logs pm2 logs app
日志文件配置
可以自定义日志文件位置:
module.exports = { apps: [{ name: 'app', script: 'app.js', output: './out.log', error: './error.log', log: './combined.outerr.log', }] }
output 只有常规输出(console.log)
error 只有错误输出(console.error)
log 结合output(常规输出)和error(错误输出),默认禁用
Rotating Logs
如果想把一个大的日志文件分为多个小文件存储,可以使用logrotate。
pm2 install pm2-logrotate
合并日志(Merging Logs)
在 cluster 模式下,每个cluster都有它自己的日志,可以使用merge选项来收集所有相关日志到一个文件里去。
module.exports = { apps: [{ name: 'app', script: 'app.js', output: './out.log', error: './error.log', merge_logs: true, }] }
日志文件依旧按照output/error/log划分。
禁用日志
可以把日志发送到/dev/null来实现禁用日志的目的。
未测试解决方法:
1. 合并日志: 将所有服务的日志合并到一个日志文件中
2. 循环回滚保存 : 可以选择1小时保存一份版本并且压缩,合并日志清空,重新记录
3. 利用错误收集系统,保证服务的错误正常收集
在pm2的配置文件中加入以下配置项
output: '/root/.pm2/logs/out.log', error: '/root/.pm2/logs/error.log', merge_logs: true
配置循环回滚策略
┬ ┬ ┬ ┬ ┬ ┬ │ │ │ │ │ | │ │ │ │ │ └ day of week (0 - 7) (0 or 7 is Sun) │ │ │ │ └───── month (1 - 12) │ │ │ └────────── day of month (1 - 31) │ │ └─────────────── hour (0 - 23) │ └──────────────────── minute (0 - 59) └───────────────────────── second (0 - 59, OPTIONAL) pm2 set pm2-logrotate:rotateInterval '* * */1 * *' //每小时备份 pm2 set pm2-logrotate:compress true //压缩 pm2 set pm2-logrotate:retain 3 //备份最多3份,也就是备份最进3小时的日志
声明:本站所有文章和图片,如无特殊说明,均为原创发布。商业转载请联系作者获得授权,非商业转载请注明出处。