在 Debian 上“集中管理 Node.js 日志”,通常可以从 应用层日志规范 → 系统级收集 → 集中存储/查看 三个层面来做。下面给你一套实用方案,从简单到进阶。
推荐:
winstonpino(性能最好,适合生产)示例(pino):
const pino = require('pino');
const logger = pino({
level: 'info',
timestamp: true
});
logger.info({ event: 'start' }, 'server started');
✅ 建议:
timestamp、level、service、pid创建服务文件:
sudo nano /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=always
Environment=NODE_ENV=production
[Install]
WantedBy=multi-user.target
启用:
sudo systemctl daemon-reexec
sudo systemctl enable --now node-app
journalctl -u node-app -f
✅ 优点:
logger.add(new winston.transports.File({
filename: '/var/log/node-app/app.log'
}));
sudo nano /etc/logrotate.d/node-app
/var/log/node-app/*.log {
daily
rotate 14
compress
missingok
notifempty
copytruncate
}
# 客户端
*.* @logserver:514
# 服务端
module(load="imudp")
input(type="imudp" port="514")
Node.js → 日志文件 → Filebeat → Elasticsearch / Loki
filebeat.inputs:
- type: log
paths:
- /var/log/node-app/*.log
output.elasticsearch:
hosts: ["http://elk:9200"]
如果你用 Docker:
logging:
driver: loki
options:
loki-url: "http://loki:3100/loki/api/v1/push"
配合 Grafana 看日志,非常舒服。
✅ 生产环境推荐组合:
❌ 不推荐:
console.log 直接当日志>> app.log如果你愿意,可以告诉我:
我可以直接给你一套 可复制的配置模板。