在 Debian 系统上导出 Node.js 日志,常见做法取决于日志是写到哪里的。下面按场景给你一个完整、实用的说明。
Node.js 默认日志通常输出到:
stdout(标准输出)stderr(错误输出)例如:
console.log('info');
console.error('error');
node app.js > app.log 2>&1
>:标准输出2>&1:错误也写入同一文件如果你用 PM2 启动 Node.js:
pm2 start app.js --name myapp
pm2 logs myapp
PM2 日志默认在:
~/.pm2/logs/
例如:
myapp-out.log
myapp-error.log
直接复制即可:
cp ~/.pm2/logs/myapp-out.log /backup/
pm2 logs myapp --lines 1000 > export.log
如果 Node.js 是通过 systemd 启动的:
# /etc/systemd/system/nodeapp.service
[Service]
ExecStart=/usr/bin/node /var/www/app/app.js
StandardOutput=journal
StandardError=journal
journalctl -u nodeapp.service
journalctl -u nodeapp.service > nodeapp.log
指定时间:
journalctl -u nodeapp.service --since "2025-01-01" --until "2025-01-31" > nodeapp.log
const fs = require('fs');
fs.appendFileSync('app.log', 'server start\n');
cp app.log /backup/app.log
const winston = require('winston');
const logger = winston.createLogger({
transports: [
new winston.transports.File({ filename: 'error.log', level: 'error' }),
new winston.transports.File({ filename: 'combined.log' })
]
});
cp combined.log /backup/
docker logs <container_id> > node.log 2>&1
| 场景 | 推荐方式 |
|---|---|
| 简单脚本 | > log.txt 2>&1 |
| 生产环境 | PM2 |
| 系统服务 | systemd + journalctl |
| 长期日志 | Winston 写文件 |
你可以直接告诉我:
console.log 还是日志库?我可以给你精确到命令级别的导出方案 ✅