在 Ubuntu 上导出 Node.js 日志,通常取决于日志是写到文件、还是输出到控制台(stdout/stderr),以及你是用什么方式运行 Node.js 的(直接 node、pm2、systemd、Docker 等)。下面按常见情况说明:
如果你的代码类似这样:
const fs = require('fs');
fs.appendFileSync('app.log', 'something happened\n');
或者直接用了日志库(winston、pino 等)写到文件。
cp app.log /path/to/backup/app.log
或
scp app.log user@remote:/backup/
查看并导出:
cat app.log > app_export.log
例如:
console.log('server started');
node app.js > app.log 2>&1
之后再导出 app.log
如果你没重定向,可以用:
script -c "node app.js" app.log
(不推荐长期使用)
pm2 logs
PM2 默认日志位置:
~/.pm2/logs/
导出:
cp ~/.pm2/logs/* /backup/logs/
或指定应用:
pm2 logs app --lines 1000 > app.log
如果你用 systemd 启动 Node.js:
journalctl -u your-node-service.service
journalctl -u your-node-service.service > node.log
导出最近 1000 行:
journalctl -u your-node-service.service -n 1000 > node.log
导出某时间段:
journalctl -u your-node-service.service --since "2024-01-01" --until "2024-01-02" > node.log
docker logs container_name
docker logs container_name > node.log 2>&1
tail -n 5000 app.log > small.log
grep "ERROR" app.log > error.log
systemd + Node.js 导出错误日志:
journalctl -u node-app.service | grep ERROR > error.log
如果你能告诉我:
我可以给你一条精确命令。