美文网首页不正经谈技术系列
大话 pm2 系列之日志那点事儿(四)

大话 pm2 系列之日志那点事儿(四)

作者: F_wind | 来源:发表于2021-10-24 19:00 被阅读0次

    警告:本文仅作为 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
      }
    }
    

    相关文章

      网友评论

        本文标题:大话 pm2 系列之日志那点事儿(四)

        本文链接:https://www.haomeiwen.com/subject/fpqdaltx.html