PM2:通过 pm2-logrotate 设置日志文件轮换

在前端开发中,我们经常需要记录应用程序的日志信息,以便在出现问题时进行排查和分析。然而,如果日志文件过大或过多,会占用大量的磁盘空间,甚至导致系统崩溃。因此,我们需要一种机制来管理和轮换日志文件,以避免这种情况的发生。在这篇文章中,我们将介绍如何使用 PM2 的 pm2-logrotate 模块来设置日志文件轮换。

PM2 简介

PM2 是一个流行的 Node.js 进程管理工具,它可以帮助我们管理应用程序的生命周期,包括启动、停止、重启、监控等。在 PM2 中,我们可以通过配置文件来指定应用程序的参数,例如端口、日志文件路径等。

pm2-logrotate 模块

pm2-logrotate 是 PM2 的一个插件,它可以帮助我们轮换日志文件,以避免磁盘空间被占满。pm2-logrotate 支持多种日志文件格式,例如 JSON、CSV、普通文本等,并且可以根据时间、大小、数量等条件来进行轮换。

安装 pm2-logrotate

首先,我们需要安装 pm2-logrotate 模块。在命令行中执行以下命令:

配置 pm2-logrotate

接下来,我们需要在 PM2 的配置文件中添加 pm2-logrotate 的配置。假设我们的应用程序名称为 myapp,日志文件路径为 /var/log/myapp.log,我们可以在 PM2 的配置文件中添加以下配置:

{
  "apps": [
    {
      "name": "myapp",
      "script": "app.js",
      "log_date_format": "YYYY-MM-DD HH:mm Z",
      "error_file": "/var/log/myapp.err.log",
      "out_file": "/var/log/myapp.out.log",
      "pid_file": "/var/run/myapp.pid"
    }
  ],
  "logrotate": {
    "rotateInterval": "0 0 * * *",
    "maxSize": "10M",
    "retain": "10",
    "compress": true,
    "workerInterval": 30
  }
}

上述配置中,我们通过 logrotate 字段来指定 pm2-logrotate 的配置参数。具体参数含义如下:

  • rotateInterval:轮换日志文件的时间间隔,支持 cron 表达式。例如,"0 0 * * *" 表示每天凌晨 0 点轮换日志文件。
  • maxSize:单个日志文件的最大大小,超过该大小时会进行轮换。支持的单位有 B、K、M、G,例如 "10M" 表示 10MB。
  • retain:保留的日志文件数量。例如,"10" 表示保留最近的 10 个日志文件。
  • compress:是否压缩轮换后的日志文件。
  • workerInterval:轮换检查的时间间隔,单位为秒。

示例代码

在 Node.js 中,我们可以使用以下代码来记录日志:

const winston = require('winston');

const logger = winston.createLogger({
  transports: [
    new winston.transports.Console(),
    new winston.transports.File({ filename: '/var/log/myapp.log' })
  ]
});

logger.info('Hello, world!');

上述代码中,我们使用了 winston 模块来记录日志。其中,Console 和 File 分别表示将日志输出到控制台和文件中。我们可以通过配置 File 的 filename 字段来指定日志文件路径。

总结

通过 pm2-logrotate 模块,我们可以轻松地管理和轮换应用程序的日志文件,避免磁盘空间被占满。在实际应用中,我们可以根据自己的需求来设置轮换的时间间隔、大小、数量等参数。

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


纠错
反馈