在前端开发中,我们常常需要记录一些重要的日志信息,以便于排查问题、优化性能等。而 PM2 是一个非常好用的 Node.js 进程管理工具,它不仅可以帮我们启动、监控、重启和停止 Node.js 进程,还可以方便地管理日志文件。本文将详细介绍 PM2 日志的配置和使用方法,希望对前端开发者有所帮助。
PM2 日志的配置
在 PM2 中,我们可以通过 pm2 logs
命令来查看进程的日志信息,但默认情况下,所有的日志信息都会输出到控制台上。这对于开发调试来说可能很方便,但对于生产环境来说就显得不太合适了。因此,我们需要对 PM2 的日志输出进行配置。
1. 配置文件
PM2 的日志配置是通过一个 ecosystem.config.js
文件来实现的,这个文件需要放在项目根目录下。我们可以通过以下命令来生成一个模板文件:
pm2 ecosystem
生成的 ecosystem.config.js
文件包含了一些默认配置和注释说明,我们需要根据自己的需求来进行修改。下面是一个简单的示例:
-- -------------------- ---- ------- -------------- - - ----- - - ----- -------- ------- ----------- ---------------- ----------- ---------- ----------- ------------------- --------- ----------------- ---- - --------- ------------ - - - -
上面的配置文件中,我们定义了一个名为 myapp
的应用,它的启动脚本为 ./app.js
。同时,我们还配置了日志的时间格式、错误日志文件和普通日志文件的输出路径,以及应用的环境变量。
2. 日志滚动
在生产环境中,我们通常需要对日志进行滚动,即定期清空或备份旧的日志文件,以避免日志文件过大导致系统瘫痪。PM2 提供了两种滚动方式:按时间滚动和按大小滚动。
按时间滚动
按时间滚动是指在一定时间间隔内,将日志输出到不同的文件中,以便于管理和查看。我们可以通过 rotate_interval
和 rotate_milliseconds
两个参数来配置按时间滚动的方式。其中,rotate_interval
表示滚动的时间间隔,可以是 'daily'
、'hourly'
、'minutely'
或者一个数字,表示以多少毫秒为单位滚动;rotate_milliseconds
表示滚动的时间点,可以是一个数字,表示从 0 点算起的毫秒数,或者一个时间字符串,表示滚动的具体时间点。下面是一个按天滚动的示例:
-- -------------------- ---- ------- -------------- - - ----- - - ----- -------- ------- ----------- ---------------- ----------- ---------- ----------- ------------------- --------- ----------------- ---- - --------- ------------ -- -------------------- -------- ------------------------ - - - -
按大小滚动
按大小滚动是指在日志文件达到一定大小时,将其备份并新建一个文件继续输出。我们可以通过 max_size
和 retain
两个参数来配置按大小滚动的方式。其中,max_size
表示每个日志文件的最大大小,可以是一个数字,表示以字节为单位的大小;retain
表示备份文件的数量,可以是一个数字,表示最多保留几个备份文件。下面是一个按大小滚动的示例:
-- -------------------- ---- ------- -------------- - - ----- - - ----- -------- ------- ----------- ---------------- ----------- ---------- ----------- ------------------- --------- ----------------- ---- - --------- ------------ -- ------------- ------ ----------- - - - -
PM2 日志的使用
在配置好 PM2 日志后,我们可以通过 pm2 logs
命令来查看日志信息。这个命令会输出所有进程的日志信息,如果我们只想查看某个进程的日志,可以通过 pm2 logs <app-name>
命令来指定应用名称。下面是一些常用的 PM2 日志命令:
pm2 logs
: 输出所有进程的日志信息pm2 logs <app-name>
: 输出指定应用的日志信息pm2 flush
: 清空所有进程的日志文件pm2 reloadLogs
: 重新载入所有进程的日志文件
除了命令行方式外,我们还可以通过 PM2 提供的 API 来管理日志文件。下面是一个使用 PM2 API 输出日志信息的示例:
-- -------------------- ---- ------- ----- --- - -------------- ----------------- -- - -- ----- - ------------------ --------------- - ------------------- ---- -- - -- ----- - ------------------ --------------- - ----------------- ------ -- - ----------------------------------- -------------- -- ----------------- ------ -- - ------------------------------------- -------------- -- -- --
上面的代码中,我们通过 pm2.connect
方法连接到 PM2,然后通过 pm2.launchBus
方法获取一个事件总线。在事件总线上,我们监听了 log:out
和 log:err
两个事件,分别表示普通日志和错误日志的输出。当有日志输出时,我们就可以在控制台上打印出日志的内容和所属进程的名称了。
结语
本文详细介绍了 PM2 日志的配置和使用方法,希望对前端开发者有所帮助。在实际开发中,我们需要根据自己的需求和实际情况来配置 PM2 的日志输出,以便于更好地管理和排查问题。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67d3d77fa941bf7134742601