在 Debian 上开启 Node.js 日志,常见需求有几种,我按场景给你说明,你可以直接对号入座。
console.log / console.error最简单(开发环境可用):
console.log('普通日志');
console.error('错误日志');
但不适合生产环境,因为没有持久化。
winston(最常用)pino(高性能)bunyannpm install winston
const winston = require('winston');
const logger = winston.createLogger({
level: 'info',
format: winston.format.json(),
transports: [
new winston.transports.File({ filename: 'error.log', level: 'error' }),
new winston.transports.File({ filename: 'combined.log' })
]
});
logger.info('服务启动');
logger.error('出错了');
日志文件会生成在当前目录(可改为绝对路径)。
node app.js > app.log 2>&1
> app.log:标准输出2>&1:错误日志也写入systemd(生产环境 ✅)sudo nano /etc/systemd/system/nodeapp.service
[Unit]
Description=Node.js App
After=network.target
[Service]
User=node
WorkingDirectory=/var/www/app
ExecStart=/usr/bin/node /var/www/app/app.js
Restart=always
Environment=NODE_ENV=production
[Install]
WantedBy=multi-user.target
启动并查看日志:
sudo systemctl daemon-reload
sudo systemctl start nodeapp
sudo systemctl status nodeapp
查看日志:
journalctl -u nodeapp -f
✅ 这是 Debian / Ubuntu 官方推荐方式
npm install -g pm2
pm2 start app.js --name myapp
pm2 logs myapp
pm2 logs myapp --lines 100
日志位置:
~/.pm2/logs/
开机自启:
pm2 startup
pm2 save
✅ 生产环境最常用
如果 Node.js 在 Nginx 后面:
/var/log/nginx/access.log
/var/log/nginx/error.log
查看:
tail -f /var/log/nginx/access.log
winston 但没加 transportsStandardOutputjournalctl --no-pager
| 场景 | 推荐 |
|---|---|
| 本地开发 | console.log |
| 生产部署 | PM2 + winston |
| 系统级管理 | systemd |
| Web 服务 | Nginx + Node |
如果你愿意,可以告诉我:
我可以 直接帮你写一份可用的完整配置。