在 Debian 上配置 Node.js 日志,通常分为 系统层面 和 应用层面 两部分。下面按常见场景给你一个完整说明,从基础到生产环境。
Node.js 本身没有内置日志系统,生产环境建议使用日志库:
npm install winston
// logger.js
const winston = require('winston');
const logger = winston.createLogger({
level: 'info',
format: winston.format.combine(
winston.format.timestamp(),
winston.format.json()
),
transports: [
new winston.transports.File({ filename: 'error.log', level: 'error' }),
new winston.transports.File({ filename: 'combined.log' }),
new winston.transports.Console()
]
});
module.exports = logger;
使用:
const logger = require('./logger');
logger.info('服务启动');
logger.error('发生错误');
✅ 优点:
如果你用 systemd 管理 Node.js 服务:
# /etc/systemd/system/nodeapp.service
[Unit]
Description=Node.js App
After=network.target
[Service]
Type=simple
User=node
WorkingDirectory=/var/www/nodeapp
ExecStart=/usr/bin/node index.js
Restart=always
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
journalctl -u nodeapp -f
✅ 优点:
如果你直接写文件日志(如 logs/app.log):
mkdir -p /var/log/nodeapp
chown node:node /var/log/nodeapp
sudo nano /etc/logrotate.d/nodeapp
/var/log/nodeapp/*.log {
daily
rotate 7
compress
missingok
notifempty
copytruncate
}
测试:
logrotate -d /etc/logrotate.d/nodeapp
如果你用 PM2:
npm install -g pm2
pm2 start index.js --name app
pm2 logs
pm2 logs app
~/.pm2/logs/
pm2 install pm2-logrotate
pm2 set pm2-logrotate:max_size 10M
✅ 优点:
| 环境 | 推荐级别 |
|---|---|
| 开发 | debug |
| 测试 | info |
| 生产 | warn / error |
const level = process.env.NODE_ENV === 'production' ? 'warn' : 'debug';
✅ 生产环境推荐方案
❌ 直接 console.log 到生产
❌ 日志文件无限增长
❌ 忘记设置日志权限
如果你愿意,可以告诉我:
我可以给你一套 完全定制的 Debian + Node.js 日志方案。