在 Debian 上导出 Node.js 日志,常见做法取决于日志是写到文件、还是由 systemd / PM2 / Docker 管理的。下面按常见场景给你说明。
如果你的 Node.js 程序像这样写日志:
const fs = require('fs');
fs.appendFileSync('app.log', 'something happened\n');
或者用了 winston、pino 等库输出到文件:
// winston 示例
transports: [ new winston.transports.File({ filename: 'app.log' }) ]
直接复制日志文件即可:
cp /path/to/app.log /tmp/app.log.bak
或打包:
tar czf app-logs.tar.gz /path/to/*.log
下载到本地(如用 scp):
scp user@server:/path/to/app.log ./
如果你是用 systemd 启动 Node.js:
# /etc/systemd/system/nodeapp.service
ExecStart=/usr/bin/node /opt/app/index.js
journalctl -u nodeapp.service
journalctl -u nodeapp.service > nodeapp.log
按时间导出(例如最近 1 天):
journalctl -u nodeapp.service --since "1 day ago" > nodeapp.log
导出成 JSON(方便分析):
journalctl -u nodeapp.service -o json > nodeapp.json
如果你用 PM2:
pm2 logs
PM2 日志默认在:
~/.pm2/logs/
直接复制:
cp ~/.pm2/logs/* /tmp/
或打包:
tar czf pm2-logs.tar.gz ~/.pm2/logs/
导出某应用日志:
pm2 logs appname --lines 1000 > appname.log
docker logs node-container
docker logs node-container > node.log
带时间戳:
docker logs -t node-container > node.log
journalctl -u nodeapp.service -f >> nodeapp-live.log
或:
tail -f app.log > app-live.log
logrotate如果你能告诉我:
我可以给你更精确的命令。