应用程序日志

https://pm2.keymetrics.io/docs/usage/log-management/

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

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

日志视图

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

-l --log [path]              specify filepath to output both out and error logs
-o --output <path>           specify out log file
-e --error <path>            specify error log file
--time                       prefix logs with standard formatted timestamp
--log-date-format <format>   prefix logs with custom formatted timestamp
--merge-logs                 when running multiple process with same app name, do not split file by id
用法:日志 [选项] [id 姓名 名称空间]

流日志文件。默认流式传输所有日志

选项:

--json                json log output
--format              formatted log output
--raw                 raw output
--err                 only shows error output
--out                 only shows standard output
--lines <n>           output the last N lines, instead of the last 15 by default
--timestamp [format]  add timestamps (default format YYYY-MM-DD-HH:mm:ss)
--nostream            print logs without launching the log stream
--highlight [value]   highlights the given value
-h, --help            output usage information

一些重要的命令:

```shell
# Display all apps logs in realtime
pm2 logs

# Display only `api` application logs
pm2 logs api

# Display new logs in json
pm2 logs --json

# Display 1000 lines of api log file
pm2 logs big-api --lines 1000

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

pm2 monit

对于每个应用程序行,将打印此元数据:

{
   "message": "echo\n",                     // the actual message that has been `console.log`
   "timestamp": "2017-02-06T14:51:38.896Z", // timestamp of the message, can be formatted
   "type": "out",                           // the type of logs, can be `err`, `out` or `PM2`
   "process_id": 0,                         // the process id used by PM2
   "app_name": "one-echo"                   // the application name
}

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

安装它:

pm2 install pm2-logrotate

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

刷新日志

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

pm2 flush

pm2 flush <api> # Clear the logs for the app with name/id matching <api>

应用程序日志选项

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

命令行界面

运行时,pm2 start app.js [OPTIONS] 您可以将以下任何选项传递给 CLI:

-l --log [path]              specify filepath to output both out and error logs
-o --output <path>           specify out log file
-e --error <path>            specify error log file
--time                       prefix logs with standard formatted timestamp
--log-date-format <format>   prefix logs with custom formatted timestamp
--merge-logs                 when running multiple process with same app name, do not split file by id

自动为日志添加日期前缀

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

$ pm2 start app.js --time
# Or a running app
$ pm2 restart app --time

配置文件

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

场地 类型 例子 描述
错误文件 (string) 错误文件路径(默认为 $HOME/.pm2/logs/ <app name>-error-<pid>.log)
输出文件 (string) 输出文件路径(默认为 $HOME/.pm2/logs/<app name>-out-<pid>.log)
日志文件 (string) 输出和错误日志的文件路径(默认禁用)
pid_文件 (string) pid 文件路径(默认为 $HOME/.pm2/pids/<app name>-<pid>.pid)
合并日志 boolean true 如果设置为 true,避免使用进程 ID 为日志文件添加后缀
日志日期格式 (string) “YYYY-MM-DD HH:mm Z” 日志日期格式(见日志部分)
日志类型 (string) “json” 指定日志输出样式,可能的值:’json’(默认会记录原始日志)

禁用日志后缀

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

禁用日志记录

要禁止将所有日志写入磁盘,您可以设置选项out_fileerror_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/nullNULL作为日志的输出(不依赖于平台,它们是硬编码的字符串)。

设置本机 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
}
作者:Jeebiz  创建时间:2023-02-25 10:19
最后编辑:Jeebiz  更新时间:2023-02-26 22:38