1.应用程序日志
使用 PM2 启动应用程序后,您可以轻松查阅和管理日志。
日志文件位于文件夹中$HOME/.pm2/logs。
1.1.日志视图
要显示应用程序的日志,您可以使用命令 pm2 logs
❯ pm2 logs -hUsage: logs [options] [id|name|namespace]流日志文件。默认流所有日志Options:--json json日志输出--format 格式化日志输出--raw 原始产量--err 仅显示错误输出--out 仅显示标准输出--lines <n> 输出最后N行,而不是默认的最后15行--timestamp [format] 添加时间戳(默认格式YYYY-MM-DD-HH:MM:ss)--nostream 打印日志而不启动日志流--highlight [value] 突出显示给定的值-h, --help 输出使用信息
一些重要的命令:
# 实时显示所有应用程序日志pm2 logs# 仅显示“api”应用程序日志pm2 logs api# 在json中显示新日志pm2 logs --json# 显示1000行api日志文件pm2 logs big-api --lines 1000
您还可以使用 CLI 仪表板检查日志:
pm2 monit
2.日志大小限制
模块pm2-logrotate使用有限的磁盘空间自动旋转并保留所有日志文件。
要安装它:
pm2 install pm2-logrotate
在此处阅读有关 pm2-logrotate 的更多信息
3.冲洗日志
这将清空 PM2 管理的当前应用程序日志:
pm2 flushpm2 flush <api> # 清除name/id匹配的应用程序的日志<api>
4.应用程序日志选项
启动应用程序时,您可以指定许多选项
4.1.命令行界面
运行时,pm2 start app.js [OPTIONS]您可以将这些选项中的任何一个传递给 CLI:
-l --log [path] 指定文件路径以输出输出日志和错误日志-o --output <path> 指定输出日志文件-e --error <path> 指定错误日志文件--time 带有标准格式化时间戳的前缀日志--log-date-format <format> 带有自定义格式时间戳的前缀日志--merge-logs 使用相同的应用程序名称运行多个进程时,不要按id拆分文件
4.1.1.使用日期自动为日志添加前缀
要轻松地为应用程序日志添加前缀,您可以传递选项--time:
$ pm2 start app.js --time# 或者运行一个程序$ 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-logs或merge_logs: true。
4.4.禁用日志记录
要禁用所有日志写入磁盘,您可以设置选项out_file,并error_file以/dev/null
module.exports = {apps : [{name: 'Business News Watcher',script: 'app.js',instances: 1,out_file: "/dev/null",error_file: "/dev/null"cron_restart: '0 0 * * *'[...]}]}
您可以提供/dev/null或NULL作为日志的输出(不取决于平台,它们是硬编码的字符串)。
4.5.设置原生 logrotate
sudo pm2 logrotate -u user
这将编写一个基本的 logrotate 配置/etc/logrotate.d/pm2-user,如下所示:
/home/user/.pm2/pm2.log /home/user/.pm2/logs/*.log {rotate 12weeklymissingoknotifemptycompressdelaycompresscreate 0640 user user}
