在 Ubuntu 上导出 Node.js 日志,主要取决于你的 Node.js 应用是怎么运行的(直接运行、PM2、systemd、Docker 等)。下面按常见场景说明。
node app.js > app.log 2>&1
>:标准输出2>&1:错误也写入node app.js >> app.log 2>&1
nohup node app.js >> app.log 2>&1 &
pm2 logs
pm2 info <app_name>
pm2 logs --raw > pm2.log
~/.pm2/logs/
pm2 flush
journalctl -u your-node-service
journalctl -u your-node-service > node.log
journalctl -u your-node-service -f >> node.log
docker logs <container_id>
docker logs <container_id> > docker.log
如使用 winston / pino:
const fs = require('fs');
const logger = require('winston');
logger.add(new logger.transports.File({
filename: '/var/log/node/app.log'
}));
然后直接导出:
cp /var/log/node/app.log ./app.log
# 复制
cp app.log /home/user/
# 压缩
tar -czf node-logs.tar.gz app.log
# 远程导出
scp app.log user@server:/path/
如果你能告诉我:
console.log 还是日志库我可以给你更精准的导出方案。