在 Debian 系统上导出 Node.js 日志,通常有几种常见方式,取决于你的 Node.js 是怎么运行的(直接命令、systemd、PM2、Docker 等)。下面按场景说明。
如果你是这样启动的:
node app.js
日志都在标准输出 / 标准错误。
node app.js > app.log 2>&1
导出已有运行进程日志(不重启):
script -q -c "node app.js" app.log
如果是通过 service 启动(如 /etc/systemd/system/nodeapp.service):
journalctl -u nodeapp.service
journalctl -u nodeapp.service > nodeapp.log
journalctl -u nodeapp.service -f >> nodeapp.log
pm2 logs
pm2 describe <app_id>
pm2 logs --nostream > pm2.log
或直接从日志目录复制:
ls ~/.pm2/logs
cp ~/.pm2/logs/*.log /var/log/node/
docker logs <container_id>
docker logs <container_id> > node_docker.log 2>&1
如果你用的是 winston / pino:
const fs = require('fs');
const log = fs.createWriteStream('/var/log/node/app.log');
console.log = (msg) => log.write(msg + '\n');
日志会直接写入文件,可直接 cp 导出。
| 场景 | 路径 |
|---|---|
| systemd | journalctl |
| PM2 | ~/.pm2/logs/ |
| Nginx 反代 | /var/log/nginx/ |
| 自定义 | /var/log/node/ |
我可以直接给你一条命令。