PM2 共享日志配置与使用技巧

阅读时长 4 分钟读完

什么是 PM2?

PM2 是一个 Node.js 进程管理器,可以用于生产环境中的进程守护、自动重启、负载均衡等操作。在 Web 开发中,特别是前端开发中,使用 PM2 有很多优点。比如:可以轻易地管理多个 Node.js 进程,监控运行状态,具有持久化存储能力等等。

PM2 中的日志文件

当我们将应用程序部署到生产环境中时,日志文件是非常重要的。在 PM2 下,可以方便地为每个进程和应用程序设置自己的日志目录,方便管理和调试。但是,如果使用默认的配置,每个进程都会将日志信息输出到自己独立的文件中,这在多个应用程序的情况下会显得十分繁琐。

PM2 中的日志共享

PM2 提供了一种方便的方式,让多个应用程序共享同一个日志文件。这样不仅能够方便地管理日志,而且可以减少磁盘占用空间。下面我们看一下如何配置 PM2 日志共享。

1. 配置 logrotate

首先需要安装 logrotate,一个用于切割和压缩日志文件的 Linux 程序。在 Ubuntu 上安装 logrotate:

安装完成后,我们需要创建一个 logrotate 配置文件。在 /etc/logrotate.d/ 目录下创建一个和应用程序同名的文件,比如说我们的应用程序名为 my-app,则使用下面命令创建一个名为 my-app 的文件:

在文件中,添加如下内容:

-- -------------------- ---- -------
---------------------------- -
    ------
    ---------
    ------ --
    --------
    -------------
    ----------
    ------------
-

注意将 /path/to/your/pm2/logs/ 替换为你实际的 pm2 日志目录。

2. 配置 PM2

接下来,我们需要修改 PM2 的配置。在应用程序所在的目录下,执行下面命令:

-- -------------------- ---- -------
--- --------- - -- ---------
--- --- ---------------------- -- - ------- ---
--- --- -------------------- -- - ----------
----

-- ---- --- ---------------------- --- - ---- --- -------------------- --- -------------------

-------------

pm2 start app.js

-- -------------------- ---- -------

---------------- ------------------------------------- --------------------

-- ---- --- --

-- ------------------

--- -- ---------

-------

pm2 logs

pm2 logs >> /var/log/pm2.log

pm2 logs app-name

pm2 logs app-name >> /var/log/pm2.log

/etc/logrotate.d/my-app 日志切割配置

/path/to/your/pm2/logs/*.log { weekly missingok rotate 12 compress delaycompress notifempty copytruncate }

PM2 配置

pm2 logrotate # 启用 logrotate pm2 set pm2-logrotate:max_size 1G # 设置日志大小为 1GB pm2 set pm2-logrotate:retain 12 # 设置保留的日志文件数

查看所有进程的日志

pm2 logs

查看指定进程的日志

pm2 logs app-name

纠错
反馈