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
收官
本文由 Chakhsu Lau 创作,采用 知识共享署名4.0 国际许可协议进行许可。
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名。