在 Debian 上开启 Node.js 日志,要看你指的是应用日志还是系统/运行日志。下面按常见场景给你一份实用指南。
Node.js 默认不会自动写日志文件,需要你在代码里输出日志。
console.log / console.error最简单方式:
console.log('info: server start');
console.error('error: db connect failed');
但这种方式只输出到 stdout / stderr,不会自动保存文件。
node app.js > app.log 2>&1
> app.log:标准输出2>&1:错误也写入⚠️ 缺点:进程重启日志会丢失
常用库:
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('Node.js 启动成功');
logger.error('数据库连接失败');
日志文件会直接生成在 Debian 服务器上。
如果你用 systemd 管理 Node.js 服务(如 pm2 或直接 systemd)
Node.js 输出到 stdout/stderr 的日志会被 systemd 捕获:
journalctl -u your-node-service.service -f
journalctl -f | grep node
✅ 不需要额外配置
pm2 logs
pm2 logs app-name
默认在:
~/.pm2/logs/
pm2 install pm2-logrotate
/var/log/nginx/access.log
/var/log/nginx/error.log
查看:
tail -f /var/log/nginx/error.log
NODE_DEBUG=* node app.js
或指定模块:
NODE_DEBUG=http,net node app.js
✅ 生产环境最佳实践
winston/var/log/node/systemd 或 PM2pm2-logrotate / logrotate我可以给你精确配置,只需要你回答:
1️⃣ 你是 PM2 / systemd / 直接 node 启动?
2️⃣ Debian 版本(cat /etc/os-release)
3️⃣ 想看 错误日志 / 访问日志 / 调试日志?
我可以直接给你一份可用的配置文件 ✅