服务公告
Node.js日志在Ubuntu中如何轮转
发布时间:2025-03-09 23:37
在Ubuntu系统中,可以使用pm2
或logrotate
工具来实现Node.js应用程序的日志轮转。下面是两种方法的详细步骤:
方法1:使用pm2
-
首先,确保已经安装了Node.js和npm。
-
使用npm安装pm2:
sudo npm install pm2 -g
- 使用pm2启动Node.js应用程序:
pm2 start app.js --name my-app
这里,app.js
是你的Node.js应用程序的入口文件,my-app
是应用程序的名称。
- pm2会自动处理日志轮转。你可以通过以下命令查看日志:
pm2 logs my-app
- 若要配置日志轮转设置,可以编辑pm2的配置文件(通常位于
~/.pm2/logs/my-app.json
),并添加以下内容:
{
"append": true,
"out_file": "/var/log/my-app/output.log",
"error_file": "/var/log/my-app/error.log",
"time": true,
"merge": true,
"lines": 10000
}
这里,你可以设置日志文件的路径、是否追加日志、时间戳、是否合并日志文件以及保留的日志行数等。
方法2:使用logrotate
- 确保已经安装了logrotate。在Ubuntu中,它通常是预装的。如果没有,请使用以下命令安装:
sudo apt-get install logrotate
- 创建一个新的logrotate配置文件,例如
/etc/logrotate.d/my-app
,并添加以下内容:
/var/log/my-app/*.log {
daily
missingok
rotate 7
compress
notifempty
create 0640 root adm
}
这里,你可以设置日志文件的路径、轮转周期(例如每天)、保留的日志文件数量、是否压缩旧日志文件等。
- 在Node.js应用程序中,确保日志输出到指定的日志文件。例如,如果你使用的是
winston
库,可以这样配置:
const winston = require('winston');
const logger = winston.createLogger({
level: 'info',
format: winston.format.json(),
transports: [
new winston.transports.File({ filename: '/var/log/my-app/output.log' }),
new winston.transports.File({ filename: '/var/log/my-app/error.log' })
]
});
- 让logrotate处理日志文件:
sudo logrotate -f /etc/logrotate.d/my-app
这将强制执行日志轮转。你可以根据需要将其添加到cron作业中以自动执行。
通过以上两种方法,你可以在Ubuntu系统中实现Node.js应用程序的日志轮转。