大话 pm2 系列之日志那点事儿(四)
2021-10-24 本文已影响0人
F_wind
警告:本文仅作为 PM2 入门级介绍指南,并无实现原理等深入内容的研究,PM2 深度用户请绕行!另外,如果文章内容存在过分夸张或者解释不合理的地方,敬请指(忽)正(略)!
一个完整的项目,我没有特指谁谁谁,我是指所有的项目,都有自己的日志记录部分,如果你要非要跟我刚,说没有,好吧,你没有!今天我们就聊聊 pm2 日志的那点事儿。
规规矩矩
打开姿势
当我正常启动一个 Node.js 项目以后,在代码里定义的正常日志以原谅色系为主,而异常日志以红色系为主。召唤日志咒语(命令):
# 其中0是进程编号
pm2 log 0
存放位置
在新建一个进程时,同时将日志存放路径:
pm2 start app.js /logs/XXX/XXX.log
强烈不推荐
# 直接
pm2 start app.js
进阶操作
我承认,pm2 是一款神器,但是术业有专攻,此处我们需要祭出另一款神器 pm2-logrotate,强强联合,来协助完成我们的日志大业。
安装
pm2-logrotate 默认不自带,我们需要依托于 pm2 安装 pm2-logrotate,执行命令:
pm2 install pm2-logrotate
八仙过海各显神通
- 文件按大小切割,比如当日志文件超过10M时,立马生成新的日志文件:
pm2 set pm2-logrotate:max_size 10M
- 保留文件数量
默认为 all,全部保留,这里设置 100,当日志文件数超过 100 时,会自动删除日期久远的日志:
pm2 set pm2-logrotate:retain 100
- 压缩日志
默认为 false,不压缩,设置为 true 以后开始压缩日志:
pm2 set pm2-logrotate:compress true
- 日志名称
默认为年月日时分秒命名,设置文件名以后,为文件名+日期时间:
pm2 set pm2-logrotate:dateFormat fileName
- 监控间隔
默认每秒监控 30 次,可自定义,最少一次:
pm2 set pm2-logrotate:workerInterval 60
- 文件按时间切割
默认每天凌晨 12 点切割一次,按照时间规则,定时强制切割文件:
pm2 set pm2-logrotate:rotateInterval 0 0 * * *
时间设置规则:
* * * * * *
┬ ┬ ┬ ┬ ┬ ┬
│ │ │ │ │ |
│ │ │ │ │ └ 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:rotateModule true
配置一览
我们可以直接在 pm2 目录下找到 module_conf.json 文件,查阅当前配置。
{
"pm2-logrotate": {
"max_size": "20M",
"retain": "all",
"compress": false,
"dateFormat": "YYYY-MM-DD_HH-mm-ss",
"workerInterval": "30",
"rotateInterval": "0 0 * * *",
"rotateModule": true
}
}