在前端开发中,日志管理是一个非常重要的环节,它能够帮助我们快速定位问题并进行调试。而 PM2 是一个非常流行的进程管理工具,它不仅可以帮助我们管理进程,还可以帮助我们管理日志。本文将详细介绍 PM2 日志管理相关操作,包括如何查看日志、如何设置日志级别、如何进行日志滚动等。
查看日志
在 PM2 中,我们可以通过以下命令来查看指定进程的日志:
pm2 logs <app-name>
其中,<app-name> 是应用的名称,如果没有指定,则默认为 all,表示查看所有应用的日志。查看日志时,我们可以通过 -n 参数来指定要查看的日志条数,例如:
pm2 logs -n 100 <app-name>
这将会显示最近的 100 条日志。
设置日志级别
在 PM2 中,我们可以通过以下命令来设置日志级别:
pm2 set pm2-logrotate:workerInterval <interval> pm2 set pm2-logrotate:rotateInterval <interval> pm2 set pm2-logrotate:max_size <size> pm2 set pm2-logrotate:retain <num>
其中,workerInterval 表示日志滚动的时间间隔,单位为毫秒;rotateInterval 表示日志备份的时间间隔,单位为毫秒;max_size 表示日志文件的最大大小,单位为字节;retain 表示保留的日志备份数量。
例如,要设置日志滚动的时间间隔为 1 小时,日志备份的时间间隔为 30 分钟,日志文件的最大大小为 10MB,保留的日志备份数量为 5,可以使用以下命令:
pm2 set pm2-logrotate:workerInterval 3600000 pm2 set pm2-logrotate:rotateInterval 1800000 pm2 set pm2-logrotate:max_size 10485760 pm2 set pm2-logrotate:retain 5
日志滚动
在 PM2 中,我们可以通过以下命令来手动触发日志滚动:
pm2 trigger <app-name> rotateLogs
其中,<app-name> 是应用的名称,如果没有指定,则默认为 all,表示触发所有应用的日志滚动。
除了手动触发日志滚动,PM2 还提供了自动触发日志滚动的功能。我们可以通过以下命令来启用日志滚动:
// www.javascriptcn.com code example pm2 set pm2-logrotate:workerInterval <interval> pm2 set pm2-logrotate:rotateInterval <interval> pm2 set pm2-logrotate:max_size <size> pm2 set pm2-logrotate:retain <num> pm2 set pm2-logrotate:compress <boolean> pm2 set pm2-logrotate:dateFormat <format> pm2 set pm2-logrotate:rotateModule <module> pm2 set pm2-logrotate:rotateSpecific <specific> pm2 set pm2-logrotate:rotateLogPath <path> pm2 set pm2-logrotate:rotateForceTrue <boolean> pm2 set pm2-logrotate:rotateBackup <boolean> pm2 set pm2-logrotate:rotateExtension <extension> pm2 set pm2-logrotate:rotateViaWorker <boolean>
其中,compress 表示是否压缩备份的日志文件;dateFormat 表示日志备份文件名的格式;rotateModule 表示日志备份的模块;rotateSpecific 表示备份日志文件的特定名称;rotateLogPath 表示备份日志文件的路径;rotateForceTrue 表示是否强制备份日志文件;rotateBackup 表示是否备份日志文件;rotateExtension 表示备份日志文件的扩展名;rotateViaWorker 表示是否在工作进程中进行日志滚动。
例如,要启用自动触发日志滚动,可以使用以下命令:
// www.javascriptcn.com code example pm2 set pm2-logrotate:workerInterval 3600000 pm2 set pm2-logrotate:rotateInterval 1800000 pm2 set pm2-logrotate:max_size 10485760 pm2 set pm2-logrotate:retain 5 pm2 set pm2-logrotate:compress true pm2 set pm2-logrotate:dateFormat YYYY-MM-DD_HH-mm-ss pm2 set pm2-logrotate:rotateModule pm2-logrotate pm2 set pm2-logrotate:rotateSpecific myapp.log pm2 set pm2-logrotate:rotateLogPath /path/to/logs pm2 set pm2-logrotate:rotateForceTrue true pm2 set pm2-logrotate:rotateBackup true pm2 set pm2-logrotate:rotateExtension .gz pm2 set pm2-logrotate:rotateViaWorker true
示例代码
以下是一个使用 PM2 进行日志管理的示例代码:
// www.javascriptcn.com code example
const express = require('express');
const app = express();
app.use((req, res, next) => {
console.log(`[${new Date().toISOString()}] ${req.method} ${req.url}`);
next();
});
app.get('/', (req, res) => {
res.send('Hello, world!');
});
app.listen(3000, () => {
console.log('Server started on port 3000');
});在上面的示例中,我们使用 console.log 来输出日志信息。当我们使用 PM2 启动应用时,它会自动将日志输出到日志文件中,我们可以通过 pm2 logs 命令来查看日志。当日志文件大小超过指定的最大值时,PM2 会自动进行日志滚动。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67d2bbeaa941bf7134556be2