在 Debian 下配置 Node.js 日志,通常分为**系统层面(进程管理)和应用层面(代码/框架)**两部分。下面按常见场景给你一个清晰、可落地的说明。
console.log('info');
console.error('error');
默认输出到 stdout / stderr,由启动方式决定去向。
winston(最常用)pino(高性能)bunyannpm install winston
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: '/var/log/nodejs/app.log' }),
new winston.transports.Console()
]
});
logger.info('server started');
/var/log/nodejs/
创建目录:
sudo mkdir -p /var/log/nodejs
sudo chown -R youruser:youruser /var/log/nodejs
sudo nano /etc/systemd/system/nodeapp.service
示例:
[Unit]
Description=Node.js App
After=network.target
[Service]
User=youruser
WorkingDirectory=/opt/nodeapp
ExecStart=/usr/bin/node app.js
Environment=NODE_ENV=production
StandardOutput=append:/var/log/nodejs/app.out.log
StandardError=append:/var/log/nodejs/app.err.log
Restart=on-failure
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reexec
sudo systemctl enable nodeapp
sudo systemctl start nodeapp
journalctl -u nodeapp -f
# 或
tail -f /var/log/nodejs/app.out.log
Debian 自带 logrotate
sudo nano /etc/logrotate.d/nodejs
/var/log/nodejs/*.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
copytruncate
}
✅ 使用 pm2 或 systemd 管理进程
✅ 日志分级(info / warn / error)
✅ 不记录敏感信息
✅ 日志文件权限最小化
✅ 配合 logrotate
pm2 start app.js
pm2 logs
pm2 install pm2-logrotate
日志默认在:
~/.pm2/logs/
如果你愿意,可以告诉我:
我可以直接给你一套完整配置。