在 Ubuntu 上收集 Node.js 日志,通常可以从应用层日志、系统层日志、进程管理工具日志、集中化收集几个层面来做。下面按常见场景给你一套实用方案。
不要只用 console.log,生产环境建议用日志库:
示例(winston):
const winston = require('winston');
const logger = winston.createLogger({
level: 'info',
transports: [
new winston.transports.File({ filename: '/var/log/nodejs/app.log' }),
new winston.transports.Console()
]
});
logger.info('server started');
日志建议输出到:
/var/log/nodejs/
如果你用 systemd 管理 Node.js 服务(Ubuntu 默认):
# /etc/systemd/system/node-app.service
[Unit]
Description=Node.js App
After=network.target
[Service]
User=node
WorkingDirectory=/opt/node-app
ExecStart=/usr/bin/node index.js
Restart=on-failure
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=node-app
[Install]
WantedBy=multi-user.target
journalctl -u node-app
journalctl -u node-app -f
journalctl -u node-app --since "2024-01-01"
✅ 优点:
如果你用 PM2:
pm2 start index.js --name my-app
pm2 logs
pm2 logs my-app
日志默认位置:
~/.pm2/logs/
集中日志:
pm2 install pm2-logrotate
如果你用 Nginx:
/var/log/nginx/access.log
/var/log/nginx/error.log
查看:
tail -f /var/log/nginx/access.log
sudo nano /etc/logrotate.d/nodejs
示例:
/var/log/nodejs/*.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
copytruncate
}
✅ 小型服务
✅ 中型服务
✅ 大型 / 微服务
如果你愿意,可以告诉我:
我可以直接帮你写一套可落地的日志方案配置。