1.应用程序日志

使用 PM2 启动应用程序后,您可以轻松查阅和管理日志。

日志文件位于文件夹中$HOME/.pm2/logs

1.1.日志视图

要显示应用程序的日志,您可以使用命令 pm2 logs

  1. pm2 logs -h
  2. Usage: logs [options] [id|name|namespace]
  3. 流日志文件。默认流所有日志
  4. Options:
  5. --json json日志输出
  6. --format 格式化日志输出
  7. --raw 原始产量
  8. --err 仅显示错误输出
  9. --out 仅显示标准输出
  10. --lines <n> 输出最后N行,而不是默认的最后15
  11. --timestamp [format] 添加时间戳(默认格式YYYY-MM-DD-HH:MM:ss
  12. --nostream 打印日志而不启动日志流
  13. --highlight [value] 突出显示给定的值
  14. -h, --help 输出使用信息

一些重要的命令:

  1. # 实时显示所有应用程序日志
  2. pm2 logs
  3. # 仅显示“api”应用程序日志
  4. pm2 logs api
  5. # 在json中显示新日志
  6. pm2 logs --json
  7. # 显示1000行api日志文件
  8. pm2 logs big-api --lines 1000

您还可以使用 CLI 仪表板检查日志:

  1. pm2 monit

2.日志大小限制

模块pm2-logrotate使用有限的磁盘空间自动旋转并保留所有日志文件。

要安装它:

  1. pm2 install pm2-logrotate

在此处阅读有关 pm2-logrotate 的更多信息

3.冲洗日志

这将清空 PM2 管理的当前应用程序日志:

  1. pm2 flush
  2. pm2 flush <api> # 清除name/id匹配的应用程序的日志<api>

4.应用程序日志选项

启动应用程序时,您可以指定许多选项

4.1.命令行界面

运行时,pm2 start app.js [OPTIONS]您可以将这些选项中的任何一个传递给 CLI:

  1. -l --log [path] 指定文件路径以输出输出日志和错误日志
  2. -o --output <path> 指定输出日志文件
  3. -e --error <path> 指定错误日志文件
  4. --time 带有标准格式化时间戳的前缀日志
  5. --log-date-format <format> 带有自定义格式时间戳的前缀日志
  6. --merge-logs 使用相同的应用程序名称运行多个进程时,不要按id拆分文件

4.1.1.使用日期自动为日志添加前缀

要轻松地为应用程序日志添加前缀,您可以传递选项--time

  1. $ pm2 start app.js --time
  2. # 或者运行一个程序
  3. $ pm2 restart app --time

4.2.配置文件

通过配置文件,您可以传递选项:

字段 类型 例子 描述
error_file (string) 错误文件路径(默认为 $HOME/.pm2/logs/XXXerr.log)
out_file (string) 输出文件路径(默认为 $HOME/.pm2/logs/XXXout.log)
pid_file (string) pid 文件路径(默认为 $HOME/.pm2/pid/app-pm_id.pid)
merge_logs boolean true 如果设置为 true,则避免使用进程 id 后缀日志文件
log_date_format (string) “YYYY-MM-DD HH:mm Z” 日志日期格式(见日志部分)

4.3.禁用日志后缀

仅适用于集群模式 (node.js) 中的应用程序;如果您希望集群进程的所有实例都登录到同一个文件中,您可以使用该选项--merge-logsmerge_logs: true

4.4.禁用日志记录

要禁用所有日志写入磁盘,您可以设置选项out_file,并error_file/dev/null

  1. module.exports = {
  2. apps : [{
  3. name: 'Business News Watcher',
  4. script: 'app.js',
  5. instances: 1,
  6. out_file: "/dev/null",
  7. error_file: "/dev/null"
  8. cron_restart: '0 0 * * *'
  9. [...]
  10. }]
  11. }

您可以提供/dev/nullNULL作为日志的输出(不取决于平台,它们是硬编码的字符串)。

4.5.设置原生 logrotate

  1. sudo pm2 logrotate -u user

这将编写一个基本的 logrotate 配置/etc/logrotate.d/pm2-user,如下所示:

  1. /home/user/.pm2/pm2.log /home/user/.pm2/logs/*.log {
  2. rotate 12
  3. weekly
  4. missingok
  5. notifempty
  6. compress
  7. delaycompress
  8. create 0640 user user
  9. }