PM2 日志管理

PM2 提供了灵活且强大的日志管理功能,可以帮助开发者轻松查看和管理 Node.js 应用的输出日志和错误日志。通过 PM2 的日志管理,你可以实时跟踪应用的运行状态、调试错误并生成可追溯的日志记录。

1. 查看实时日志

要查看应用的实时日志,可以使用以下命令:

pm2 logs

这将显示所有正在运行的应用的日志。如果你只想查看特定应用的日志,可以指定应用名称或 ID:

pm2 logs my-app

或者:

pm2 logs 0

默认情况下,pm2 logs 命令会同时显示 标准输出日志(stdout)和 错误日志(stderr)。

日志输出示例

[0] my-app    | Server started on port 3000
[0] my-app    | Error: Connection failed
[0] my-app    | at /path/to/app.js:15:7

日志中包含了应用的标准输出信息(如启动信息、正常日志)以及错误信息。

2. 查看错误日志

PM2 还允许你单独查看错误日志。如果你只关心应用的错误输出,可以使用 --err 标志来过滤:

pm2 logs my-app --err

这将只显示应用的错误日志,帮助你快速定位并解决问题。

3. 管理日志文件

PM2 默认将日志输出到文件中,方便后续查看和存档。你可以通过以下命令查看日志文件的位置:

pm2 show my-app

该命令会列出所有进程的信息,其中包括 stdoutstderr 日志文件的路径。

示例输出

Describing process with id 0 - name my-app
--------------------------------------------------------------
pid             1234
status          online
name            my-app
cpu             0.5%
memory          50MB
user            root
watching        no
uptime          3h
script path     /path/to/my-app/app.js
stdout log      /path/to/my-app/logs/my-app-out.log
stderr log      /path/to/my-app/logs/my-app-error.log

4. 日志滚动和自动清理

PM2 支持日志滚动和自动清理功能,帮助你避免日志文件无限制增长,占用过多磁盘空间。你可以在配置文件中设置日志滚动的规则。

设置日志滚动

ecosystem.config.js 配置文件中,你可以通过 log_date_formatmax_sizeretain 等选项来设置日志的滚动策略。

module.exports = {
  apps: [
    {
      name: 'my-app',
      script: './app.js',
      log_date_format: 'YYYY-MM-DD HH:mm:ss',
      max_size: '10M',  // 日志文件达到 10MB 时滚动
      retain: 7,        // 保留 7 个滚动日志文件
    },
  ],
};

配置项说明:

  • log_date_format: 设置日志的时间格式。
  • max_size: 设置日志文件的最大大小,超过此大小后将自动滚动。
  • retain: 设置保留的滚动日志文件数量,超出数量的旧日志会被删除。

启用日志滚动

配置完成后,使用以下命令启动应用:

pm2 start ecosystem.config.js

PM2 会自动根据配置滚动日志,并在磁盘空间不足时自动清理旧日志。

5. 手动清理日志

如果你需要手动清理 PM2 生成的日志文件,可以使用 pm2 flush 命令:

pm2 flush

此命令会清空所有应用的日志文件内容,但不会删除日志文件本身。

6. 结语

PM2 提供了强大的日志管理功能,让你能够轻松管理和查看应用的运行日志。无论是实时查看日志、分析错误日志,还是设置日志滚动和自动清理,PM2 都为开发者提供了多种工具来确保应用的稳定运行。

通过合理配置和使用 PM2 的日志功能,你可以更高效地监控和调试 Node.js 应用,确保应用的高可用性和可追溯性。