PM2 日志切割配置
in Tutorial with 0 comment
PM2 日志切割配置
in Tutorial with 0 comment

PM2 日志切割需要安装 pm2-logrotate 插件, 通过插件配置日志进行日志自动切割,自动删除过过期日志,防止日志占满目录。

安装步骤

安装pm2-logrotate

$ pm2 install pm2-logrotate

pm2-logrotete安装以后默认自动启动。

配置pm2日志切割保存时间

通过环境变量配置日志回滚参数,配置以后pm2-logrotate重新启动, 立刻生效。

# 保留最近7份日志(5个日志不包换当前日志)
pm2 set pm2-logrotate:retain 5
# 默认每天进行日志切分
pm2 set pm2-logrotate:rotateInterval '0 0 * * *'
# 日志最大10M, 如果日志大于10M立刻切分 
pm2 set pm2-logrotate:max_size 10M  
pm2 set pm2-logrotate:rotateModule true
# 每60s检查日志
pm2 set pm2-logrotate:workerInterval 60
#  配置日志日期格式
pm2 set pm2-logrotate:dateFormat YYYY-MM-DD_HH-mm-ss
# 禁止压缩
pm2 set pm2-logrotate:compress false

pm2日志存放路径: /root/.pm2/logs/

在 Docker 中切割日志

Docker 使用 pm2 时候日志也是存放在目录/root/.pm2/logs/ 同样也需要安装pm2-logrotate, 并且通过 docker-pm2 启动,安装完 pm2-logrotate 通过docker-pm2 启动自己 app.js 同时也会启动pm2-logrotate。对应dockerfile如下:

FROM node:8.12
    
# install pm2 and pm2-logrotate and setting pm2-logrotate param  
RUN npm set regsitry https://registry.npm.taobao.org && \
    npm install pm2  -g && \
    pm2 install pm2-logrotate && \
    pm2 set pm2-logrotate:retain 5  && \
    pm2 set pm2-logrotate:rotateInterval '0 0 * * *' && \
    pm2 set pm2-logrotate:rotateModule true && \
    pm2 set pm2-logrotate:workerInterval 60 && \
    pm2 set pm2-logrotate:dateFormat YYYY-MM-DD_HH-mm-ss && \
    pm2 set pm2-logrotate:compress false && \
    pm2 set pm2-logrotate:max_size 10M  

WORKDIR /app

COPY ./ /app/
RUN npm install
VOLUME /root/.pm2/logs

# pm2-docker start your app; 启动应用同时自动启动pm2-logrotate
CMD ["pm2-docker", "start", "pm2/api.json"]

容器启动以后通过在容器终端查看如下:

root@dd20d14c0ee3:/app# ps -ef
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  7 08:42 ?        00:00:01 node /usr/local/bin/pm2-docker start pm2/api.json
root        16     1  4 08:42 ?        00:00:00 node /root/.pm2/modules/pm2-logrotate/node_modules/pm2-logrotate
root        26     1  6 08:42 ?        00:00:00 node /app/api.js                                                                              
root        46     0  2 08:42 ?        00:00:00 bash

收官

Responses