pm2的日志管理

pm2 自身的日志文件 ~/.pm2/pm2.log,下面讲的是 pm2 app(应用)的日志文件。

默认日志

每个 app(应用) 会生成 instances*2 (实例数×2)个日志文件。

app 的标准输出日志文件
~/.pm2/logs/<app name>-out-<instance id>.log
app 的错误输出日志文件
~/.pm2/logs/<app name>-error-<instance id>.log

合并输出类型日志(-l)

每个 app(应用) 会生成 instances+1 (实例数+1)个日志文件。

app 的日志文件
~/.pm2/logs/<app name>-<instance id>.log

不影响默认日志。

  • 可以指定合并输出类型的日志文件名(-l app.log)

    输出日志文件名为 app-<instance id>.log

合并实例日志(–merge-logs)

同一 app(应用)的所有 instances(实例)日志文件放在一起。

app 的默认标准输出日志文件
~/.pm2/logs/<app name>-out.log
app 的默认错误输出日志文件
~/.pm2/logs/<app name>-error.log
app 的合并输出类型日志文件
~/.pm2/logs/<app name>.log

禁止默认日志

  • 禁止默认的标准输出日志文件(-o /dev/null)
  • 禁止默认的错误输出日志文件(-e /dev/null)

示例:app 生成一个日志文件简化日志管理

pm2 -n app -i 0 -l app.log -o /dev/null -e /dev/null --merge-logs start app.js

这样只会生成一个日志文件 app.log。

定期清理日志

不建议使用 pm2-logrotate ,太多问题了(详见: 控制pm2的日志文件大小 )。

还是使用 logrotate 服务靠谱(参考 Setting up a native logrotate 被遗忘的Logrotate | 火丁笔记):

/etc/logrotate.d/pm2-root

/root/.pm2/pm2.log /root/.pm2/logs/*.log {
    daily
    size 1M
    rotate 10
    create 600 nobody nobody
    missingok
    notifempty
    compress
    sharedscripts
    copytruncate
}