在 Debian 下,Node.js 日志的“导出”方式取决于日志是写到哪里的。下面按常见场景给你总结几种做法。
如果你是这样启动的:
node app.js
日志默认在 stdout / stderr。
node app.js > app.log 2>&1
>:标准输出2>&1:错误也写入导出/查看:
cat app.log
tail -f app.log
如果你用 systemd 启动(如 /etc/systemd/system/node-app.service):
[Service]
ExecStart=/usr/bin/node /opt/app/app.js
journalctl -u node-app.service
journalctl -u node-app.service > node-app.log
journalctl -u node-app.service -f
const winston = require('winston');
winston.add(new winston.transports.File({ filename: 'app.log' }));
直接导出:
cp app.log /backup/app.log
pm2 logs
导出日志:
pm2 logs --out out.log --err err.log
或:
cat ~/.pm2/logs/*.log > all.log
docker logs <container_id> > node.log
实时:
docker logs -f <container_id>
scp user@server:/path/app.log ./
| 场景 | 导出方式 |
|---|---|
| 普通启动 | node app.js > log |
| systemd | journalctl -u xxx > log |
| PM2 | pm2 logs |
| Docker | docker logs |
| 日志库 | 直接复制文件 |
如果你能告诉我:
我可以给你更精确的一条命令。