1.应用程序日志
使用 PM2 启动应用程序后,您可以轻松查阅和管理日志。
日志文件位于文件夹中$HOME/.pm2/logs
。
1.1.日志视图
要显示应用程序的日志,您可以使用命令 pm2 logs
❯ pm2 logs -h
Usage: 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 flush
pm2 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 12
weekly
missingok
notifempty
compress
delaycompress
create 0640 user user
}