不正经谈技术系列

大话 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

八仙过海各显神通

  1. 文件按大小切割,比如当日志文件超过10M时,立马生成新的日志文件:
pm2 set pm2-logrotate:max_size 10M
  1. 保留文件数量
    默认为 all,全部保留,这里设置 100,当日志文件数超过 100 时,会自动删除日期久远的日志:
pm2 set pm2-logrotate:retain 100
  1. 压缩日志
    默认为 false,不压缩,设置为 true 以后开始压缩日志:
pm2 set pm2-logrotate:compress true
  1. 日志名称
    默认为年月日时分秒命名,设置文件名以后,为文件名+日期时间:
pm2 set pm2-logrotate:dateFormat fileName
  1. 监控间隔
    默认每秒监控 30 次,可自定义,最少一次:
pm2 set pm2-logrotate:workerInterval 60
  1. 文件按时间切割
    默认每天凌晨 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)
  1. 模式开关
    默认开启,并按规则切割日志,否则只会有一个日志文件:
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
  }
}
上一篇下一篇

猜你喜欢

热点阅读