文章目录
一、 pm2安装
npm install pm2 -g
二、 pm2-logrotate安装
pm2 install pm2-logrotate
三、查看pm2-logrotate配置
//查看当前pm2-logrotate配置[方法1]
pm2 conf pm2-logrotate
//查看当前pm2-logrotate配置[方法2],show是查看整个进程的情况。也可查看当前配置,在Process configuration中
pm2 show pm2-logrotate
四、设置pm2-logrotate
- 直接在命令行复制粘贴输入就可以,配置名的key和value之间用空格
pm2 set
设置后是实时生效的配置,会在下一个workerInterval时间的时候进行判断
//设置日志文件的最大大小为 10MB,也可以设置KB大小,例如pm2 set pm2-logrotate:max_size 100KB
pm2 set pm2-logrotate:max_size 10M
//保留最近的 30 个日志文件[小贴士1]
pm2 set pm2-logrotate:retain 30
//启用日志文件压缩,压缩后是.gz文件[小贴士2]
pm2 set pm2-logrotate:compress true
//设置日志文件的日期格式
pm2 set pm2-logrotate:dateFormat YYYY-MM-DD_HH-mm-ss
//设置日志轮换检查的时间间隔为 30 秒,每30秒查看日志大小是否需要分割
pm2 set pm2-logrotate:workerInterval 30
//设置日志轮换的时间间隔为每天午夜,使用的是 cron 表达式格式[小贴士3]
pm2 set pm2-logrotate:rotateInterval '0 0 * * *'
五、 小贴士
1. retain小知识
-
原retain数量在30,重新设置
pm2 set pm2-logrotate:retain 10
,数量由大减小,多余的日志会在新日志生成时进行删减[非实时]。- 如果数量由小变大,则实时生效
2. compress小知识
-
compress选项用于控制日志文件在轮换时是否进行压缩
-
当
compress
选项设置为true
时,轮换后的日志文件将被压缩。这意味着旧的日志文件会被压缩成.gz
格式,以节省磁盘空间。例如- 原始日志文件:
app-out.log
- 轮换后的压缩日志文件:
app-out.log-2023-10-01_00-00-00.gz
- 原始日志文件:
-
当
compress
选项设置为false
时,轮换后的日志文件将不会被压缩。日志文件将以原始格式保留。例如:- 原始日志文件:
app-out.log
- 轮换后的日志文件:
app-out.log-2023-10-01_00-00-00
- 原始日志文件:
3. cron 表达式格式详细说明
a. Cron 表达式的基本格式
* * * * * [command]
- - - - -
| | | | |
| | | | +----- 星期几 (0 - 7) (Sunday=0 or 7) //表示任务在一周中的哪一天执行。0 和 7 都表示星期天。
| | | +------- 月份 (1 - 12) //表示任务在一年中的哪个月份执行
| | +--------- 日期 (1 - 31) //表示任务在一个月中的哪一天执行
| +----------- 小时 (0 - 23) //表示任务在一天中的哪个小时执行
+------------- 分钟 (0 - 59) //表示任务在每小时的哪一分钟执行
b. 特殊说明
*
:表示所有可能的值。例如,*
在分钟字段表示每分钟执行一次。,
:表示列表值。例如,1,2,5,7
在分钟字段表示在第1、2、5和7分钟执行。-
:表示范围值。例如,1-5
在小时字段表示从1点到5点之间的每个小时执行。/
:表示步长值。例如,*/5
在分钟字段表示每5分钟执行一次。?
:表示不指定的值。只能用于日期和星期几字段,避免冲突。L
:表示最后的值。例如,L
在日期字段表示一个月的最后一天。W
:表示工作日(周一到周五)最近的某一天。例如,15W
在日期字段表示最接近15号的工作日。#
:表示某个月的第几个星期几。例如,3#2
在星期几字段表示某个月的第二个星期三。
//示例
* * * * *:每分钟执行一次。
0 * * * *:每小时的第0分钟执行一次。
0 0 * * *:每天午夜执行一次。
0 0 1 * *:每月1号的午夜执行一次。
0 0 * * 0:每周日的午夜执行一次。
0 0 1 1 *:每年1月1日的午夜执行一次。
*/5 * * * *:每5分钟执行一次。
0 9-17 * * 1-5:每周一到周五的9点到17点的每个小时的第0分钟执行一次。
c. 特殊字符串
@yearly
或@annually
:每年一次,等同于0 0 1 1 *
。@monthly
:每月一次,等同于0 0 1 * *
。@weekly
:每周一次,等同于0 0 * * 0
。@daily
或@midnight
:每天一次,等同于0 0 * * *
。@hourly
:每小时一次,等同于0 * * * *
。
六、 卸载
pm2 uninstall pm2-logrotate