在 Debian 下导出 Node.js 日志,常见做法取决于你 日志是如何产生的(stdout、文件、PM2、systemd 等)。下面按常见场景给你一个完整说明。
node app.js > app.log 2>&1
> app.log:标准输出2>&1:错误也写入同一文件✅ 适合临时测试
nohup node app.js > app.log 2>&1 &
查看日志:
tail -f app.log
pm2 logs
pm2 logs app_name
pm2 logs app_name --out out.log --err err.log
~/.pm2/logs/
module.exports = {
apps: [{
name: "app",
script: "app.js",
out_file: "/var/log/node/app-out.log",
error_file: "/var/log/node/app-err.log",
merge_logs: true,
log_date_format: "YYYY-MM-DD HH:mm:ss"
}]
}
然后:
pm2 start ecosystem.config.js
[Unit]
Description=Node.js App
After=network.target
[Service]
Type=simple
User=node
WorkingDirectory=/opt/app
ExecStart=/usr/bin/node index.js
StandardOutput=append:/var/log/node/app.log
StandardError=append:/var/log/node/error.log
Restart=always
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl start node-app
sudo systemctl enable node-app
journalctl -u node-app -f
或:
tail -f /var/log/node/app.log
const winston = require('winston');
const logger = winston.createLogger({
transports: [
new winston.transports.File({ filename: '/var/log/node/app.log' })
]
});
logger.info('Hello Debian');
日志文件:
/var/log/node/app.log
journalctl -u node-app > node-logs.txt
导出最近 100 行:
journalctl -u node-app -n 100 > node-logs.txt
| 场景 | 推荐方式 |
|---|---|
| 本地开发 | stdout + 重定向 |
| 服务器 | systemd / PM2 |
| 高频日志 | winston + 按天切割 |
| 容器 | stdout(Docker log) |
sudo mkdir /var/log/node
sudo chown node:node /var/log/node
如果你愿意,可以告诉我:
我可以给你 最合适的一套配置方案。