PM2 的日志文件介绍及使用方法

PM2 是一款强大的 Node.js 进程管理工具,它能够帮助开发者简化 Node.js 应用的部署、监控和运维等工作。在使用 PM2 管理 Node.js 应用时,我们经常需要查看应用的日志文件来定位问题或者监控应用的运行状态。本文将详细介绍 PM2 的日志文件及其使用方法,以帮助读者更好地使用 PM2 进行 Node.js 应用的管理。

日志文件介绍

在 PM2 管理的 Node.js 应用中,每个应用都有其对应的日志文件。这些日志文件默认存储于 $HOME/.pm2/logs 目录下,其中包含了应用运行时的各种日志信息,如应用的标准输出、标准错误输出、异常堆栈等。这些日志信息可以帮助我们了解应用的运行情况,查找问题并进行调试。

在 PM2 中,每个日志文件都有一个唯一的标识符,即 app-name。对于一个名为 app-name 的应用,在 $HOME/.pm2/logs 目录下,它的日志文件名为 app-name-out.logapp-name-error.log,分别对应应用的标准输出和标准错误输出。我们可以通过这些日志文件来查看应用的运行日志信息,如下所示:

$ cd ~/.pm2/logs
$ tail -f app-name-out.log # 查看应用的标准输出日志信息
$ tail -f app-name-error.log # 查看应用的标准错误输出日志信息

日志文件配置

PM2 的日志文件支持多种配置方式,如日志文件路径、日志文件名、日志滚动策略等。我们可以通过在 ecosystem.config.js 文件中配置 log 属性来指定应用的日志文件配置。具体配置如下:

module.exports = {
  apps: [
    {
      name: 'app-name',
      script: 'app.js',

      // 日志文件配置
      log_file: '/path/to/app-name-out.log', // the path to the log file
      log_date_format: 'YYYY-MM-DD HH:mm:ss Z', // 日志时间戳格式
      merge_logs: true, // 是否合并应用的标准输出和标准错误输出到同一日志文件中
      out_file: '/path/to/app-name-out.log', // the path to the out log file
      error_file: '/path/to/app-name-error.log', // the path to the error log file
      log_type: 'json', // 日志输出格式,支持json, raw, pretty, simple, 自定义格式等
      log_size: 1024 * 1024, // 日志文件大小限制,单位为字节,默认为 10 MB
      max_logs: 10, // 保留的日志文件最大数量,默认为 10 个

      // 省略其他配置...
    }
  ]
}

日志文件使用方法

在使用 PM2 管理 Node.js 应用时,我们可以通过 PM2 的命令行工具来查看和管理应用的日志文件。PM2 提供了丰富的命令,如 pm2 logspm2 flushpm2 reloadLogspm2 set pm2-logrotate:rotateInterval 等,用于帮助我们管理应用的日志文件。下面是一些常用的命令及其用途:

  • pm2 logs: 查看应用的日志输出信息。使用 -f 参数可以实时更新日志信息。例如:pm2 logs -f app-name

  • pm2 flush: 清空所有应用的日志信息。例如:pm2 flush

  • pm2 reloadLogs: 重新打开应用的日志文件。如果发现应用的日志文件丢失或者无法打开,在重启应用之前可以尝试使用此命令重新打开日志文件。例如:pm2 reloadLogs app-name

  • pm2 set pm2-logrotate:rotateInterval: 设置日志文件的滚动时间间隔。例如:pm2 set pm2-logrotate:rotateInterval 1h,表示每小时滚动一次日志文件。

总结

PM2 的日志文件是 Node.js 应用管理中非常重要的一部分。本文介绍了 PM2 的日志文件及其使用方法,希望可以帮助读者更好地管理 Node.js 应用的日志信息。同时,建议读者在实践中结合自己的业务需求来进行配置和使用,以便更好地满足自己的需求。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6596812eeb4cecbf2da51625


纠错反馈